Android PackageManager packages.xml文件格式
packages.xml文件存放在/data/system目录下
该文件记录了系统中所有应用程序的包管理相关信息
PmS根据该文件进行包管理的各种操作
标签名称 | 所包含的值举例 | |||||||||||||
last-platform-version | internal="17" external="17" | |||||||||||||
<permission-trees /> | 暂时不使用 | |||||||||||||
<permissions> <item /> </permissions> |
<item name="android.permission.CHANGE_WIFI_MULTICAST_STATE" package="android" protection="1" /> | |||||||||||||
<package> <sigs> <cert /> </sigs> <perms> <item /> </perms> </package> |
<package
name="com.sec.android.gallery3d" codePath="/system/app/SecGallery2013.apk" nativeLibraryPath="/data/app-lib/SecGallery2013" flags="1621061" ft="143fbeddf38" it="143fbeddf38" ut="143fbeddf38" version="17" userId="10088"> <sigs count="1"> <cert index="3" key="30820...." /> </sigs> <perms> <item name="android.permission.READ_EXTERNAL_STORAGE" /> <item name="android.permission.GET_TASKS" /> </perms> </package> |
|||||||||||||
disabled-components | <item name="com.android.email.service.MailService"> | |||||||||||||
prefered-activities | 偏好设置,比如当一个intent对应了两个Activity是,系统会弹出一个对话框提示用户要执行那个Activity,并且提供一个 复选框,用户可以勾选复选框,从而使得以后每次都执行相同的Activity,而这个信息就保存在该标签中 |
|||||||||||||
<shared-user> <sigs> <cert/> </sigs> <perms> <item /> </perms> </shared-user> |
<shared-user
name="org.simalliance.uid.openmobileapi"
userId="1101"> <sigs count="1"> <cert index="0" /> </sigs> <perms> <item name="android.permission.NFC" /> <item name="android.permission.READ_PHONE_STATE" /> <item name="android.permission.READ_EXTERNAL_STORAGE" /> <item name="org.simalliance.openmobileapi.SMARTCARD" /> <item name="android.permission.RECEIVE_BOOT_COMPLETED" /> <item name="android.permission.WRITE_SECURE_SETTINGS" /> <item name="android.permission.WRITE_EXTERNAL_STORAGE" /> </perms> </shared-user> |
|||||||||||||
cleaning-package | 程序已删除,但是对应的程序数据目录还没有删除,默认卸载不会清除数据 | |||||||||||||
update-package |
1. last-platform-version 标签
系统升级后重新为已安装的程序设置访问权限,重新建立包管理所需懂得XML文件
一般和相应得SDK版本号相同
两个属性:internal表示内部存储区上的程序被跟更新前系统的版本号
external表示外部存储区程序更新前的系统版本号
这两个号一般相同
2. permission 标签
保存了系统所有的权限列表(1. Framework定义的权限(系统权限), 2. App自定义的权限)
Framework定义的权限是在 android/framework/base/core/res/rs/AndroidManifest.xml中
每个permission都由一个item标签标识,item标签中分别包含三种属性
① name: 权限名称。系统名称一般以android.permission开头。App一般以所属的包名开头。权限名称必须全局唯一
② package: 权限所在的包名。Framework对应的包名是android。
③ protection:保护级别。一共有4中保护级别,普通,危险,签名,系统