APK的安装过程分析(PackageManagerService启动过程)
时序图
步骤说明
1.pkms的main函数入口
2.加入android.uid.system,android.uid.phone等一些系统的shareUserId,保存到SharedUserSetting数据结构
3.保存shareUserId到Uid的数据结构中
4.从system/etc/permissions目录的xml读取权限,这些xml文件是编译完成后烧写进手机的。
5.将xml的内容保存到特定的数据结构。
6.解析data/system/目录下packages.xml,packages-backup.xml,packages.list,packages-stopped.xml,packages-stopped-backup.xml的信息
7.读取packages.xml文件中package标签信息
8.保存xml信息到PackageSetting的数据结构
9.保存pakage到应用对应的uid数据结构,和3步骤相似
10.读取packages.xml文件中shared-user标签信息
11.保存xml信息到SharedUserSetting的数据结构
12.保存shareUserId到应用对应的uid数据结构,和3,9步骤相似
13.开始扫描package,此函数会调用多次,从而扫描不同目录下的apk文件,比如系统的apk默认路径有system/framework,system/a