準備知識:
當妳要發布壹個軟件或是自制的ROM時,妳就需要壹個使用了私鑰的證書來為.apk或.zip文件進行簽名。Android系統使用證書來識別軟件作者和軟件之間所建立的認證關系。做這個事情最經典的方式就是用keytool創建證書,然後使用jarsigner進行簽名。但是本教程則會提供壹個對於大多數人來說更為容易的方法,那就是使用壹個名為SignApk.jar的工具。
SignApk.jar是壹個已包含在Android平臺源碼包中的工具,妳可以在本貼的附件中下載。如果要使用SignApk.jar,妳需要創建壹個帶有對應證書/公鑰的私鑰。而妳可以使用Openssl來創建私鑰/公鑰對。在Unix/Linux系統中使用Openssl相對來說比較容易。對於Windows用戶,妳可以在本貼附件或此鏈接中下載Windows版本的Openssl。
如何使用OpenSSL創建私鑰/公鑰對(也就通常說的證書文件,有誤勿怪)(Windows版本)
下載附件中的openssl-0.9.8k_WIN32.zip
將下載到的壓縮包解壓到妳電腦上的任意位置(例如:C:\OpenSSL)
在OpenSSL\bin文件夾下按順序輸入(使用CMD命令行工具,其中第2步會需要妳輸入壹些信息,見圖):
1、openssl genrsa -out key.pem 1024
2、openssl req -new -key key.pem -config C:\OpenSSL\openssl.cnf -out request.pem
3、openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem
4、openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt
大星星提示:如果妳的recovery不具備簽名校驗切換功能,那麽用妳自己生成的證書文件來給ROM簽名,會提示簽名校驗失敗。因為目前幾乎所有的第三方recovery中所帶的私鑰都是testkey的。(附件中的android.zip裏面所包含的證書文件已更新為testkey)
如何使用SignApk.jar來為壹個apk或zip文件簽名:
下載附件中的android.zip
將下載到的壓縮包解壓到妳電腦上的任意位置(例如:C:\android)
如果妳的電腦上還沒有安裝JAVA環境,請下載並進行安裝。
(如果妳創建了自己的私鑰/公鑰對)復制certificate.pem和key.pk8到妳解壓得到的android文件夾中
使用CMD命令行工具cd到android文件夾,然後輸入:(對於我提供的包,只需要將要簽名的文件放在android文件夾中,然後拖至對應的批處理文件上即可)
java -jar signapk.jar certificate.pem key.pk8 your-app.apk your-signed-app.apk
或是
java -jar signapk.jar certificate.pem key.pk8 your-update.zip your-signed-update.zip