当前位置: 首页 > news >正文

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>:灵活的例外控制,适用于需要动态调整权限的场景。
  • 两者结合使用可以平衡安全性和灵活性,但需避免规则冲突。

相关文章:

  • Visual Studio 2022 跨网络远程调试
  • JSP笔记
  • 《类和对象(下)》
  • Android NDK 高版本交叉编译:为何无需配置 FLAGS 和 INCLUDES
  • Cursor 编辑器 的 高级使用技巧与创意玩法
  • Flask Docker Demo 项目指南
  • 二次封装 el-dialog 组件:打造更灵活的对话框解决方案
  • 六、Hive 分桶
  • Spark处理过程-转换算子
  • 运行Spark程序-在Spark-shell——RDD
  • 第四章 部件篇之按钮矩阵部件
  • 前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性
  • JVM Optimization Learning(七)-GC
  • JVM——方法内联之去虚化
  • 哈希表:数据世界的超级索引
  • 【速通RAG实战:进阶】10.RAG 进化论:Advanced与Modular架构解锁智能问答新维度
  • Kafka 如何保证消息顺序性
  • 关于IDE的相关知识之二【插件推荐】
  • Kubernetes Horizontal Pod Autosscaler(HPA)核心机制解析
  • 数据结构基础--蓝桥杯备考
  • 宝通科技:与宇树合作已签约,四足机器人在工业场景落地是重点商业化项目
  • 上海团队在医学顶刊连发两文,率先提出“证据污染”循证概念
  • 筑牢安全防线、提升应急避难能力水平,5项国家标准发布
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 新华时评:中美经贸会谈为全球经济纾压增信
  • 影子调查丨三名“淘金客”殒命雪峰山:千余废弃金矿洞的监管难题