一、解析清单文件并加载
应用程序的启动需要从PackageManagerService说起,由于应用程序是由PackageManager管理的,可以简单认为PackageManagerService为应用程序的启动做了一些准备工作,才能将应用程序开启起来。
1、PackageManagerService读取所有应用程序的Mainfest信息,并且建立信息库存储在系统级共享内存中
1)解析:
PackageManagerService在启动后,会进行解析的工作,它会重点监控一些文件:system/framework、system/app、data/app、data/app_private; 一旦将数据存入到这些文件中,就会去解析
2)权限分配:
PackageManagerService会建立底层userids和groupids同上层permissions之间的映射,就会给一些底层用户分配权限,进行权限的映射,UID和GroupID,都会分配相应的权限
3)保存数据:
PackageManagerService还有重要的一个操作就是将解析的每个apk的信息保存到packages.xml和packages.list文件里,
在packages.list记录了如下数据:pkgName,userId,debugFlag,dataPath(包的数据路径),【下次再开机的时候,不会再扫描每个apk了,只需要读packages.xml和packages.list文件即可】,除了这两个主要的工作外,还会进行一些其他的操作,如检测文件等
2、Launcher就将PackageManagerService已