/data/system/packages.xml这个文件由PackageManagerService.java生成,里面记录了系统当中安装的APK的所有属性,权限等信息。当系统中的APK安装、删除、升级时,文件就会被更新。
<permissions>标签定义了目前系统中定义的所有权限。主要分为两类:系统定义的(package属性为android)和APK定义的(package属性为APK的包名)。
<package>代表一个APK的属性,它的属性含义如下。
name:APK的包名
codePath:安装路径。有/system/app系统APK和/data/app两种。/system/app存放系统出厂时预置的一些APK,/data/app存放用户安装的第三方APK。
system:如果APK被安装在/system/app下,system的值为true;安装在/data/app下面的话,值为true。
ts:时间戳
version:APK的版本号
sharedUserId/userId:Android系统启动一个普通的APK时,会为这个APK分配一个独立的UID,这就是userId。如果APK要和系统中其它APK使用相同的UID的话,那就是sharedUserId。关于共享UID,下面有更详细的描述。
perms:APK的AndroidManifest.xml文件中,每使用一个<uses-permission>标签,<perms>标签中就会增加一项。
<shared-user>代表一个共享UID,通常,共同实现一系列相似功能的APK共享一个UID。<perms>标签中的权限代表了这个共享UID的权限,所有使用的同一个共享UID的APK运行在同一进程中,这个进程的UID就是这个共享UID,这些APK都具有这个共享UID的权限。
name:共享UID的名字,在APK的android:sharedUserId属性中使用。
userId:使用这个共享UID的所有APK运行时所在的进程的UID。