美文网首页
Android APP 安装流程

Android APP 安装流程

作者: _喝喝酒吹吹风_ | 来源:发表于2020-08-20 13:16 被阅读0次

    安装流程

    1. 将apk文件复制到data/app目录
    2. 将APP的dex文件拷贝到/data/dalvik-cache目录,再在/data/data/目录下创建应用程序的数据目录(以应用包名命令),用来存放应用的数据库、xml文件、cache、二进制的so动态库等
    3. 解析apk的AndroidManifest.xml文件,注册四大组件,将apk的权限、应用包名、apk的安装位置、版本、userID等重要信息保存在/data/system/packages.xml文件中。这些操作都是在PackageManagerService中完成
    4. dex2oat操作
    5. 更新权限信息
    6. 完成安装,发送Intent.ACTION_PACKAGE_ADDED广播
    7. 桌面显示icon
    dexopt/dex2oat 操作在不同版本下的区别
    • Dalvik虚拟机-dexopt: 该时机在第一次执行时app时 非安装时(详情见 Android运行流程)
    • ART虚拟机-dex2oat:AOT (Ahead-Of-Time) 运行前编译
      • Android O(8.0)前,将dex字节码翻译成本地字节码oat(非全量)
      • Android O(8.0)开始:开始新增vdex概念,不是为了提升性能,而是为了避免不必要的验证Dex 文件合法性的过程,例如首次安装时进行dex2oat时会校验Dex 文件各个section的合法性,这时候使用的compiler filter 为了照顾安装速度等方面,并没有采用全量编译,当app盘启动后,运行一段时间后,收集了足够多的jit 热点方法信息,Android会在后台重新进行dex2oat, 将热点方法编译成机器代码,这时候就不用再重复做验证Dex文件的过程了
    APK安装涉及到的几个常用目录
    1. system/app : 系统自带的应用程序,获得root权限才能删除。
    2. data/app : 用户程序安装目录,安装时会把apk文件复制到此目录下。
    3. data/data : 存放应用程序的数据。
    4. data/dalvik-cache : 将apk中的dex文件安装到该目录下(dex文件是dalvik或art虚拟机的可执行文件,大小约为原始apk的四分之一)
    手机所有的apk 信息存放在哪?

    5个位于目录/data/system的文件

    • packages.xml:记录了系统中所有安装的应用信息,包括基本信息、签名和权限。
    • pakcages-back.xml:packages.xml文件的备份。
    • pakcages-stoped.xml:记录系统中被强制停止的运行的应用信息,系统在强制停止某个应用的时候,会将应用的信息记录在该文件中。
    • pakcages-stoped-backup.xml:pakcages-stoped.xml文件的备份。
    • packages.list:保存普通应用的数据目录和uid等信息。
    PacketManagerService
    • PackageManagerService是由SystemServer启动,PMS负责应用的安装、卸载、权限检查等工作;
    • 在/system/app和/data/app目录下的apk文件,PMS在启动过程中,都会扫描安装;
    • 每次开机时,PMS都会在构造函数中对指定目录下的apk进行扫描,没有安装的apk就会触发安装;

    参考

    1. [Android App安装流程] https://www.jianshu.com/p/839711ec545d
    2. [Android Apk安装过程分析] https://www.jianshu.com/p/953475cea991

    相关文章

      网友评论

          本文标题:Android APP 安装流程

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