1. 程式人生 > >為Android刷機包簽名

為Android刷機包簽名

當你要釋出一個軟體或是自制的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