APK安装涉及到的几个常用目录
system/app : 系统自带的应用程序,获得root权限才能删除
data/app : 用户程序安装目录,安装时会把apk文件复制到此目录下
data/data : 存放应用程序的数据
data/dalvik-cache : 将apk中的dex文件安装到该目录下(dex文件是dalvik虚拟机的可执行文件,大小约为原始apk的四分之一)
APK安装的四大步骤
(1)拷贝apk到指定的目录
默认情况下,用户安装的apk首先会拷贝到/data/app下,用户有访问/data/app目录的权限(系统出厂的apk文件会被放到/system分区下,括/system/app,/system/vendor/app,以及/system/priv-app等。该分区需要
root权限的用户才能访问)
(2)加载apk、拷贝文件、创建应用的数据目录
为了加快APP的启动速度,apk在安装的时候,会首先将APP的可执行文件(dex)拷贝到/data/dalvik-cache目录下,缓存起来。再在/data/data/目录下创建应用程序的数据目录(以应用包名命名),用来存放应用的数据库、xml文件、cache、二进制的so动态库等。
(3)解析apk的AndroidManifest.xml文件
在安装apk的过程中,会解析apk的AndroidManifest.xml文件,将apk的权限、应用包名、apk的安装位置、版本、userID等重要信息保存在/data/system/packages.xml文件中。这些操作都是在PackageManagerService中完成的。
(4)显示icon图标
应用程序经过PMS中的逻辑处理后,相当于已经注册好了,如果想要在Android桌面上看到icon图标,则需要Launcher将系统中已经安装的程序展现在桌面上。
APK安装的预备知识点
(1)PackageManagerService是由SystemServer启动,PMS负责应用的安装、卸载、权限检查等工作
(2)在/system/app和/data/app目录下的apk文件,PMS在启动过程中,都会扫描安装
(3)每次开机时,PMS都会在构造函数中对指定目录下的apk进行扫描,没有安装的apk就会触发安装。
(4) 本文的源码是基于Android6.0
网友评论