為Android刷機包簽名
阿新 • • 發佈:2019-02-14
當你要釋出一個軟體或是自制的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的。
========================================================================
使用SignApk.jar來為一個apk或zip檔案簽名:
1.有資料夾:C:\karl,該檔案的由來請看《建立Android刷機包》一文
2.如果你的電腦上還沒有安裝JAVA環境,請下載並進行安裝
3.如果你建立了自己的私鑰/公鑰對,複製certificate.pem和key.pk8到你解壓得到的karl資料夾中
4.使用CMD命令列工具cd到karl資料夾,然後輸入:
(對於我提供的包,只需要將要簽名的檔案放在karl資料夾中,然後拖至對應的批處理檔案上即可)
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