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