如何對自己的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 ....

最後的效果圖:







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