Android权限之二packages.xml解析

/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。