Android 普通应用升级,具备不可删除与系统权限
不可删除,已通过测试。
使得成为系统应用,将不可删除。请注意,成为系统应用不用删除属性,不代表具备可操作系统权限。同时,请确认AndroidManifest.xml 无错误,软件可运行不代表 xml 无错误。
解决方法:将 apk 放置于 /system/app 文件夹内。
步骤:
adb root
... // 若出现 timeout 等待连接成功即可。
adb remount
...adb disable-verity // 出现 Use "adb disable-verity" to disable verity. 解决方案
...adb reboot
adb push *.apk /system/app
... adb push *.so /system/lib64 或 /system/lib //若apk具备依赖关系,可通过压缩软件打开知否存在lib文件夹查看。
adb shell
cd /system/app
chmod 777 *.apk // 具备可执行权限
reboot // 重启后,apk 会执行安装操作。若重新后未发现图标,说明未正确安装,可使用 adb install -r 进行安装,具备安装失败原因提示。
系统权限 ,已通过测试。
xml 中,manifes 添加 android:sharedUserId="android.uid.system"。
签名准备
准备文件:platform.pk8 , platform.x509.pem ,需注意 此文件为系统的配套文件,可从编译源码中获取。
keytool-importkeypair,点此下载
android/prebuilts/sdk/tools/lib
openssl pkcs8 -in platform.pk8 -inform DER -outform PEM -out shared.priv.pem -nocrypt
可拷贝 文件到 vendor 内操作,此为厂商预装apk,可使用 Android.mk 配合 mm 使用。此方法可能问题较多,使用apk源码编译签名。
openssl pkcs12 -export -in platform.x509.pem -inkey shared.priv.pem -out shared.pk12 -name androidkey
Enter Export Password: android (linux下不可见)
Verifying - Enter Export Password:android (linux下不可见)
android 密码。
keytool -importkeystore -deststorepass android -destkeypass android -destkeystore platform.keystore -srckeystore shared.pk12 -srcstoretype PKCS12 -srcstorepass android -alias androidkey
以上操作 须在编译平台(Linux)完成 。得到签名文件 .keystroe 。(使用 signapk.jar 签名无法安装,表明签名失败)
Android Studio 配置
生成 APK
Build -> Generate Signed Bundle / APK。
生成 apk 。目标存在 Destination Folder。安装即可。
直接运行签名调试包
即可直接运行调试。