特许权限许可名单   您所在的位置:网站首页 如何开发安卓应用权限 特许权限许可名单  

特许权限许可名单  

2023-03-25 00:04| 来源: 网络整理| 查看: 265

特权应用是位于系统映像某个分区上 priv-app 目录下的系统应用。在各 Android 版本中,相应分区为:

Android 8.1 及更低版本 - /system Android 9 及更高版本 - /system, /product, /vendor

在本页面中,/etc/permissions/priv-app 解析为 partition/etc/permissions/priv-app。

过去,设备制造商几乎无法控制可对特权应用授予哪些签名|特许权限。从 Android 8.0 开始,制造商必须在 /etc/permissions 目录下的系统配置 XML 文件中明确授予特许权限。从 Android 9 开始,实现人员必须明确授予或拒绝授予所有特许权限,否则设备将无法启动。

privapp-permissions.xml 文件只有在与特权应用位于同一分区时才能授予或拒绝授予该应用权限。例如,如果 /product 分区上的应用请求特许权限,则只能由同样位于 /product 上的 privapp-permissions.xml 文件来同意或拒绝该请求。

注意:必须列入许可名单的只有核心平台(“android”软件包)所定义的权限。设备制造商定义的特许权限仍将自动授予。在 privapp-permissions.xml 文件中,请仅列出实际存在于该分区上的应用。如果应用不在该分区上,系统将忽略所列条目。 注意:/vendor 分区上的特权应用只能获取保护级别设为 vendorPrivileged 的特许权限。 添加许可名单

应用的权限许可名单可列在位于 frameworks/base/etc/permissions 目录下的单个或多个 XML 文件中,如下所示:

/etc/permissions/privapp-permissions-OEM_NAME.xml /etc/permissions/privapp-permissions-DEVICE_NAME.xml

对于如何组织内容,没有严格的规则。设备实现人员可以决定内容结构,只要 /system/priv-app 下的所有应用均列入许可名单即可。例如,Google 针对由 Google 开发的所有特权应用提供了一个许可名单,并建议使用以下组织方式:

对于已包含在 Android 开源项目 (AOSP) 树中的应用,请将其权限列在 /etc/permissions/privapp-permissions-platform.xml 中。 对于 Google 应用,请将其权限列在 /etc/permissions/privapp-permissions-google.xml 中。 对于其他应用,请使用以下格式的文件:/etc/permissions/privapp-permissions-DEVICE_NAME.xml。 自定义许可名单

AOSP 包含可根据需要自定义的许可名单实现。 对于包含在 AOSP 中的应用,其权限已在 /etc/permissions/privapp-permissions-platform.xml 中列入许可名单。

如果有不应授予的权限,请修改 XML,用“deny-permission”标记代替“permission”标记。示例:

... 查找缺少的权限

如需在启动新设备时查找缺少的权限,请启用过渡日志模式:

ro.control_privapp_permissions=log

违规行为会记录在日志文件中,但非特许权限仍将得到准许。这样,在提供违规行为列表的同时,设备仍能正常运行。下面是错误消息格式:

PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAME} - not in privapp-permissions allowlist

必须将缺少的权限加入相应的许可名单来解决所有违规行为。

在 Android 8.0 及更低版本中,受影响的应用即使位于 priv-app 路径中也不会被授予缺少的权限。 在 Android 9 及更高版本中,违规行为(缺少特许权限)意味着设备无法启动。您必须明确准许或拒绝授予所有特许权限。 强制执行许可名单

许可名单列好后,可设置 build 属性 ro.control_privapp_permissions=enforce 使其在运行时生效。

注意:仅软件包为“android”的应用所声明的权限需列入许可名单中。ro.control_privapp_permissions 属性状态必须符合兼容性定义文档 (CDD) 第 9.1 节的要求。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有