Android开机启动的流程中,在系统初始化的时候,PackageManager底层实现类PackageManagerService会去扫描系统中一些特定的目录,并解析其中的APK文件,同时,Android系统把它获取的应用信息,保存在XML文件中,所以系统应用的信息都可以通过解析这个XML文件去查看,当系统中的Apk安装,删除,升级时,这个文件都会被更新,它位于/data/system/目录下,命名为packages.xml文件.
- < permissions>
该标签下定义了目前系统中所有权限,并分为两类:系统定义的(package属性值为android)和apk定义的(package属性值为apk包名) - < package>
该标签代表了一个apk属性,其中节点信息的含义如下:
name: apk的包名;
codepath: apk的安装路径,主要有/system/app 和/data/app两种,前者存放系统级别的应用或者厂商定制的apk,后者存放用户安装的第三方apk
userid: 用户ID
version:版本号 - < perms>
对应apk的AndroidManifest文件中<user-permission>标签,记录apk的权限信息.
通过packgaes.xml文件中的这些标签,可以获取设备中很多应用信息,通常在开发系统层的时候,能够发挥很大的价值.