1. 项目概述
在Android系统开发中,有时需要将特定APK预装为系统级应用,以获得更高权限或实现开机自启动等特性。其中/system/product/priv-app目录是存放特权应用的标准位置,这些应用可以获取系统级权限(如SYSTEM_UID)。不同于普通预装应用,priv-app需要特殊的编译配置和签名机制。
我在多个Android定制项目中实践发现,正确配置priv-app需要特别注意三个关键点:源码目录结构、Android.bp配置语法、以及系统编译策略。下面将结合具体案例,分享从零开始完成priv-app预装的全流程,包括几个容易踩坑的细节。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理与前置条件
2.1 系统分区权限机制
Android的/system/product/priv-app目录具有以下特性:
- 应用自动获得
sharedUserId="android.uid.system" - 可以声明使用
signature|privileged保护的权限 - 在SELinux策略中默认拥有更高权限上下文
与普通预装的区别:
| 特性 | /system/app | /system/priv-app |
|---|---|---|
| UID | 普通应用UID | SYSTEM_UID (1000) |
| 权限保护类型 | signature | signature|privileged |
| SELinux策略 | 受限 | 宽松策略 |
2.2 开发环境准备
需要配置以下基础环境:
- Android源码树:建议使用AOSP主线分支或对应设备厂商提供的源码
- 编译环境:
bash复制# Ubuntu示例环境 sudo apt install git-core gnupg flex bison build-essential zip
