Apk安装和解析流程

作者: wenju_song | 来源:发表于2018-09-21 18:08 被阅读103次
APK的安装流程.png

这篇文章来总结apk安装流程,这篇文章分四个方面来描述这几个流程。

1.Android中调起安装界面

Android根据文件类型MimeType来判断是否弹起安装页面

  • 常用的文件类型
    add("application/zip", "zip");
    add("application/vnd.android.package-archive", "apk");
    add("video/mp4", "mp4");
    add("video/3gpp", "3gpp");
    add("text/plain", "txt");
    add("image/gif", "gif");
    add("image/ico", "ico");
    add("image/jpeg", "jpeg");
    add("image/jpeg", "jpg");
  • 安装界面是PackageInstallerActivity

2.整个apk安装流程

安装图解和过程描述
  • 复制APK到/data/app目录下,解压并扫描安装包。
  • 资源管理器解析APK里的资源文件。
  • 解析AndroidManifest文件,并在/data/data/目录下创建对应的应用数据目录。
  • 然后对dex文件进行优化,并保存在dalvik-cache目录下。
  • 将AndroidManifest文件解析出的四大组件信息注册到PackageManagerService中。
  • 安装完成后,发送广播。

总体说来就两件事情拷贝APK和解析APK,解析APK主要是解析AndroidManifest.xml,以便获得它的安装信息。在安装的过程中还会这个应用分配Linux用 户ID和Linux用户组ID(以便它可以在系统中获取合适的运行权限)。

3.涉及的三个进程

  • PackageInstaller进程:PackageInstaller事实上是一个应用,它负责APK安装以及卸载过程中与用户的交互流程。
  • SystemServer进程:该进程主要运行的是系统服务,APK的安装、卸载和查询都由PackageManagerService负责,它也是Android核心系统服务的一种,在SystemServer里初始化系统服务的时候被启动。
  • DefaultContainerService进程:DefaultContainerService也是一个单独的进程,它主要负责检查和复制设备上的文件,APK的复制就是由DefaultContainerService来完成的。

4.apk解析流程

  • Android不同类型
    /system/framwork:保存的是资源型的应用程序,它们用来打包资源文件。
    /system/app:保存系统自带的应用程序。
    /data/app:保存用户安装的应用程序。
    /data/app-private:保存受DRM保护的私有应用程序。
    /vendor/app:保存设备厂商提供的应用程序。
  • DEX的dexopt流程
    dexopt操作实际上对DEX文件在执行前进行一些优化,但是不同的虚拟机操作有所不同。
    Davlik:将dex文件优化生成odex文件,这个odex文件的后缀也是dex,保存在/data/dalvik-cache目录下。
    ART:将dex文件翻译生成oat文件

以上就是对Android安装流程的一个介绍。

相关文章

网友评论

    本文标题:Apk安装和解析流程

    本文链接:https://www.haomeiwen.com/subject/beqznftx.html