Android應用程式進行系統簽名
有時寫一個程式需要呼叫系統的庫,如果許可權不夠,是用不了庫裡面一些方法的 。這時就需要將apk進行系統簽名。
簡單常用的方法:
1,在apk的AndroidManifest.xml中的manifest節點中加入Android:sharedUserId="android.uid.system"
2,執行或打包得到apk
3,使用目標系統的platform金鑰來給apk檔案簽名:
在系統android\build\target\product\security目錄下找到platform.x509.pem 和platform.pk8兩個檔案;在系統在out/host/Linux-x86/framework目錄下找到signapk.jar檔案,把它們複製出來放到一個資料夾下,把需要進行系統簽名的apk也和它們放到一個資料夾下。然後首先進入該檔案目錄,再在cmd上輸入下面語句:Java -jar signapk.jar platform.x509.pem platform.pk8 被簽名apk名稱.apk 簽名後apk名稱.apk,執行完後會在當前目錄得到一個新的apk "簽名後apk名稱.apk" 即為已經系統簽名的apk。
舉個列子,例如要簽名reset.apk,如下圖:
cmd進入當前目錄:輸入命令java -jar signapk.jar platform.x509.pem platform.pk8 reset.apk s_reset.apk
按回車鍵,生成的s_reset.apk即為已經系統簽名的apk。
需要注意的是,其中必須platform.x509.pem 在 platform.pk8 之前,否則會報錯。
參考:http://blog.csdn.net/lilidejing/article/details/45098879
注:
第二步時
通過eclipse編譯,Android manifest XML中 shared user id 包含android.uid.shared等系統許可權的時候,則會報以下錯誤;
Installation
error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
主要是由於使用了android.uid.shared導致的問題。
使用eclipse編譯出apk檔案,但是這個apk檔案是不能用的。
然後拿這個apk進行第三步
--------------------------------------------------------------
另一解決方案如下
第一個方法簡單點,不過需要在Android系統原始碼的環境下用make來編譯:
1. 修改Android.mk檔案,加入LOCAL_CERTIFICATE := platform這一行
2. 使用mm命令來編譯,生成的apk就可以在模擬器中運行了。
參考:http://blog.csdn.net/jumping_android/article/details/7241217
http://blog.csdn.net/happyhell/article/details/5903389