系统定制全景:源码、overlay 与属性的分工
2026/8/9大约 3 分钟系统定制Android 14定制RRO属性
系统定制全景:源码、overlay 与属性的分工
资源值优先用 RRO/overlay,运行期开关优先评估属性或 Settings,只有行为变化才进入源码。 较低的生效层级通常更易维护,但仍要验证目标是否允许覆盖以及配置的读取时机。
先选择最小生效层级
| 常见误解 | 正确理解 |
|---|---|
| 定制系统就要改源码 | 很多定制用 overlay 和属性就能完成,维护成本更低 |
| overlay 能改所有东西 | overlay 只能改资源;逻辑行为要源码或属性 |
| 属性随便加就能用 | 属性有类型、作用域(ro/persist)与安全上下文约束 |
核心结论
- 资源类定制优先 RRO:不碰源码、易升级、可叠加。
- 行为类定制优先属性/配置:改配置即可,风险低。
- 系统应用能力靠签名与白名单授予。
- 源码定制是最后手段:能力强但维护与升级成本高。
- 选择顺序:overlay → 属性/配置 → 白名单 → 源码。
定制方式选择地图
逐步解释:
- 资源:颜色、文案、图标、布局用 overlay。
- 行为:开关、阈值、默认值用属性与配置。
- 能力:系统应用特权与权限用签名和白名单。
- 结构:真正的逻辑改动才动源码。
常用在哪些地方
按厂商与定制团队的高频场景排列:
- 换皮肤/品牌:状态栏、图标、字体、开机动画(overlay)。
- 调默认行为:默认音量、默认语言、默认输入法(属性/设置)。
- 系统应用能力:预装特权应用、权限白名单。
- 隐藏或修改系统入口:设置项显隐(见 原生设置入口定制)。
- 深度功能改造:改框架逻辑(源码定制)。
验证与排障
环境:开发设备或模拟器;部分命令需要 root。
adb shell cmd overlay list
adb shell getprop | grep -iE "ro\.|persist\."
adb shell dumpsys package <包名> | grep -E "priv|allowlist"先确认 overlay 是否启用、属性是否生效、白名单是否通过,再决定改动方式。排障细节 在系列末章展开。
源码入口
| 文件 | 关键位置 | 作用 |
|---|---|---|
frameworks/base/core/res/ | 系统资源 | overlay 目标 |
| RRO 机制 | overlay 管理 | 资源覆盖 |
system/core/init/ | 属性服务 | 属性读写 |
privapp-permissions-*.xml | 权限白名单 | 特权配置 |
公共路径:frameworks/base/、system/core/ 与 system/etc/permissions/。 行号以 r75 检索为准。
只需替换资源值时,优先阅读 RRO 与 overlay。