欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > android 权限配置

android 权限配置

2025/12/14 3:52:00 来源:https://blog.csdn.net/xianrenli38/article/details/147935974  浏览:    关键词:android 权限配置

在AOSP 14的ROM定制中,<exceptions><privapp-permissions>是用于管理特权应用权限的两种不同机制,主要区别在于作用范围、配置方式和权限授予逻辑。以下是具体分析:


1. <privapp-permissions> 标签

  • 作用
    用于显式声明特权应用(位于/system/priv-app/vendor/priv-app目录)所需的系统级权限。这些权限通常是signature|privilegedprivileged级别的,普通应用无法直接申请。
  • 配置方式
    /etc/permissions/privapp-permissions-*.xml文件中定义,例如:
    <permissions><privapp-permissions package="com.example.privilegedapp"><permission name="android.permission.ACCESS_FINE_LOCATION"/><permission name="android.permission.WRITE_SECURE_SETTINGS"/></privapp-permissions>
    </permissions>
    
  • 特点
    • 权限必须显式列出,未声明的权限不会被授予。
    • 适用于所有特权应用,无论其签名或分区(/system/vendor)。
    • 是AOSP推荐的标准化方式,兼容性更好。

2. <exceptions> 标签

  • 作用
    用于定义例外规则,允许或拒绝特定签名或分区的特权应用访问某些权限。通常用于更细粒度的控制,例如允许某些OEM预装应用使用系统级权限,但拒绝其他应用。
  • 配置方式
    /etc/permissions/privapp-permissions-*.xml文件中通过<exceptions>块定义,例如:
    <permissions><exceptions><exception package="com.oem.privilegedapp"><permission name="android.permission.PACKAGE_USAGE_STATS" allowed="true"/></exception><exception package="com.malicious.app" signing-key="malicious-key"><permission name="android.permission.WRITE_SECURE_SETTINGS" allowed="false"/></exception></exceptions>
    </permissions>
    
  • 特点
    • 基于签名(signing-key)或包名(package)进行例外控制。
    • 可以显式允许或拒绝特定权限,优先级高于默认的<privapp-permissions>
    • 适用于需要动态调整权限的场景(如OEM定制或安全策略)。

3. 核心区别

特性<privapp-permissions><exceptions>
作用声明特权应用所需的权限定义例外规则,允许或拒绝特定权限
配置粒度按包名全局声明权限按包名或签名细化控制权限
优先级较低(默认规则)较高(例外规则)
适用场景标准化特权应用权限分配OEM定制、安全策略、动态权限控制
权限范围仅支持<permission>标签支持allowed="true/false"显式控制

4. 使用建议

  • 优先使用<privapp-permissions>
    如果特权应用需要一组固定的权限,直接在<privapp-permissions>中声明即可,清晰且易于维护。
  • 使用<exceptions>处理特殊情况
    如果需要基于签名或包名动态调整权限(例如允许某些OEM应用使用高危权限,但拒绝其他应用),则使用<exceptions>
  • 避免重复配置
    <exceptions>中的规则会覆盖<privapp-permissions>中的默认规则,因此需谨慎设计。

5. 示例场景

假设需要为OEM预装的系统工具应用(com.oem.systemtool)授予WRITE_SECURE_SETTINGS权限,但拒绝其他应用使用该权限:

<permissions><!-- 默认规则:拒绝所有应用的WRITE_SECURE_SETTINGS --><exceptions><exception package="com.oem.systemtool"><permission name="android.permission.WRITE_SECURE_SETTINGS" allowed="true"/></exception></exceptions><!-- 其他特权应用的权限 --><privapp-permissions package="com.example.app1"><permission name="android.permission.ACCESS_FINE_LOCATION"/></privapp-permissions>
</permissions>

总结

  • <privapp-permissions>:标准化权限分配,适用于大多数特权应用。
  • <exceptions>:灵活的例外控制,适用于需要动态调整权限的场景。
  • 两者结合使用可以平衡安全性和灵活性,但需避免规则冲突。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com