如何对自己的App进行系统签名,并安装到手机运行

背景:

某些App需要一些权限比较高功能,比如管理其他进程,静默安装(貌似辅助功能也能实现)等,可能需要把自己定义成为系统APP,

也就是sharedUserId="android.uid.system",这就要用到系统签名。

虽然最后签名是与不同的手机厂商合作的,可是在开发的工程中,如何用系统签名文件签名进行测试呢?

虽然源码里面能够找到签名文件platform.x509.pem/platform.pk8,但Nexus手机出厂时并不是用的这个文件签名的,这个只能在模拟器上使用。

这样岂不是很蛋通~~~

下载了Google官网上的Room装入我的Nexus6,也不行:

https://developers.google.com/android/nexus/images

最后刷入CM的Room才成功搞定。走了一些弯路,记录一下。


刷Google Room遇到的问题:

在刷入Room的过程中报如下的错误:

....
archive does not contain 'boot.sig'
archive does not contain 'recovery.sig'
archive does not contain 'system.sig'
archive does not contain 'vendor.img'
...


没有刷入成功,可能是它的脚本没有更新?

于是把flash-all.sh的内容修改为如下:

#! /bin/bash
adb reboot bootloader
#fastboot oem unlock
./flash-base.sh
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot reboot

这样就可以刷入Google的Room了。

刷CM Room (Nexus 6 ):

Room下载地址:

http://mirror.cyanogenmod.org/jenkins/148998/cm-13.0-20160214-NIGHTLY-shamu.zip

Recovery 下载地址:

http://mirror.cyanogenmod.org/jenkins/148998/cm-13.0-20160214-NIGHTLY-shamu-recovery.img

CM的Room是一个OTA包,也就是update.zip。

一开始手机上的Recovery是twrp,安装提示data分区等有问题,需要进行factory reset.

于是果断的刷入上面CM的Recovery,并且进行Full reset,安装成功。


APP进行系统签名并安装

使用源码中的签名文件命令:
java -jar signapk.jar platform.x509.pem platform.pk8 TestInput.apk  TestInput_cm_sig_3.apk

安装时提示如下错误:



这是因为adb install 会将APP安装到/data/目录下,而系统APP是要求在/system/app下。

如何将APP安装到/system/app目录

有两种方式,第一,Root手机,然后push.

                     第二,twrp recovery的功能非常强大,可以在这下面进行文件操作。

twrp下载地址:

https://twrp.me/devices/motorolanexus6.html

刷入Recovery命令:
adb reboot bootloader
fastboot flash recovery twrp.img
fastboot reboot

Root方式:

6.0的手机,估计一般的Root工具也不能很好的进行Root.

可以用SuperSU,在Recovery模式下直接刷入su工具。

twrp操作:

挂载/system分区,然后adb push ....

最后的效果图:







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章