[10 月的好奇心]Apk 安装过程

android Nov 01, 2018

安卓系统安装一个应用时,系统大致会进行如下操作:

  • 复制APK安装包到data/app目录下,文件名会以应用的package命名;
  • 解压并扫描安装包,把dex文件(Dalvik字节码)保存到dalvik-cache目录(一般情况下,会先执行dexopt即dex文件的优化,将优化后的dex文件保存至该目录下),并data/data目录下创建对应的应用数据目录(data/data目录可读可写);
  • 更新/data/system/packages.xml中的内容,将APK的信息加入进去。

应用安装涉及到的目录

  • /system/app :系统自带的应用程序,获得adb root权限才能删除
  • /data/app :用户程序安装的目录。安装时把apk文件复制到此目录
  • /data/data :存放应用程序的数据
  • /data/dalvik-cache:将apk中的dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,当然,ART–Android Runtime的可执行文件格式为oat,启用ART时,系统会执行dex文件转换至oat文件)
  • /data/system :该目录下的packages.xml文件,类似于Windows的注册表,这个文件是在解析apk时由writeLP()创建的,里面记录了系统的permissions,以及每个apk的name,codePath,flags,ts,version,uesrid等信息,这些信息主要通apk的AndroidManifest.xml解析获取,解析完apk后将更新信息写入这个文件并保存到flash,下次开机直接从里面读取相关信息添加到内存相关列表中。当有apk升级,安装或删除时会更新这个文件。
/* 看板娘 */