下午收到合作伙伴給的測試的Apk,該apk需要用到系統權限,並且要在我司開發的android開發板上運行。本來想圖省事,於是直接使用 adb push 命令將這個apk push 到system/app目錄下,后來發現apk push成功了,但是重啟板子后,他們的apk 死活跑不起來,甚至launcher上連圖標都沒有!后來咨詢他們的工程師,說是需要給該apk 加上系統簽名,並且要使用adb install 指令才能安裝成功。通過反編譯他們的apk, 注意到清單文件中聲明了:
android:sharedUserId="android.uid.system"
所以要是直接使用adb install 指令安裝是肯定不行的,可能會報一些:
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 諸如此類的問題。
於是找系統組的人要了簽名證書文件:platform.pk8 和 platform.x509.pem,對該apk進行系統簽名:
java -jar signapk.jar platform.x509.pem platform.pk8 8761_Dongle_Demo.apk 8761_Dongle_signed.apk
signapk.jar 是簽名工具。
8761_Dongle_Demo.apk 是合作伙伴給的未簽名的apk
8761_Dongle_signed.apk 是我指定的生成的apk的名字
執行:
這樣就能生成帶系統簽名的apk, 再次執行adb install 就不會再報 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 這樣的問題了。
關於 platform.pk8 和 platform.x509.pem 這兩個文件
這兩個文件位於: /build/target/product/security/ 目錄下:http://androidxref.com/4.4_r1/xref/build/target/product/security/
但要注意不能直接使用AOSP code中的這兩個文件,這兩個文件由定制android系統的廠商提供。
signapk.jar 下載鏈接:鏈接: https://pan.baidu.com/s/1mVQTwLP_Ju52p5A_MGr8UQ 提取碼: ba3c