做一个Andriod系统应用的方法
背景是最近有个需求,要在某个定制的系统上做个系统应用。其实主要有2点,一是要有系统签名文件,二是系统要可以修改可读写权限。为了避免后面自己忘记怎么搞,这里留个记录。 :)
step 1
获取系统签名,用系统签名文件,给自己的应用签名,可以通过Android的signapk
工具(或自定义脚本)进行签名:
java -jar signapk.jar platform.x509.pem platform.pk8 app-unsigned.apk app-signed.apk
确保使用与设备系统镜像相同的platform.x509.pem
和platform.pk8
文件。
PS: 可选的,可以在AndroidManifest.xml中添加系统属性
<!-- 声明共享用户ID,与系统进程共用 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:sharedUserId="android.uid.system">
<!-- 声明所需系统权限(如安装APK) -->
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
step 2 修改系统为可读写系盘 + 开启root权限
挂载/system分区为可读写
adb shell
su
mount -o remount,rw /system
PS:如果是模拟器,在设置中勾选打开即可,不需要上面的命令行操作。
step 3 推送app
su
cd /system/priv-app/
mkdir -p /system/priv-app/org.yeshen.test.system # 创建专属目录
cp /sdcard/Download/xx.apk /system/priv-app/org.yeshen.test.system
reboot
- 推荐路径:
/system/priv-app/
(更高权限)或/system/app/
- org.yeshen.test.system 替换成你的应用包名
step 4 检查应用是否安装成功
adb shell pm list packages | grep org.yeshen.test.system
step 5 调试与常见问题
- Logcat排查错误
adb logcat | grep "PackageManager"
常见问题:
- 签名错误:确保使用正确的
platform
密钥。 - 权限不足:检查APK是否放在
/system/priv-app
并正确设置权限。 - 区挂载失败:某些设备需使用
mount -o rw,remount /system
。 - 替代方案(无root):若设备未解锁System分区,可通过Magisk模块将应用注入系统分区(需Magisk root权限)。
- 替代方案:在模拟器上/云真机操作,模拟器/云真机基本上都有root。 :)