如何給apk文件簽名(一)

給apk文件簽名主要分三步,創建證書(如果沒有)-->簽名-->優化(可選
)

1)使用jdk的keytool工具生成簽名用的證書
> keytool -genkey -v -aliasCERT -keyalg RSA -keysize 2048 -validity 10000 -keystore CERT.keystore 
創建過程需要輸入一些標識信息和密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): 
    CERT.keystore ---- 證書保存的文件名 
    CERT ---- 證書的別名 
    10000 ---- 10000天的有效期 
    2048 ---- 默認爲1024 bits,Android 建議使用2048 bits或更高
其他的詳細信息可以使用keytool -help查看幫助 
證書生成後使用如下命令可以查看證書的信息:
> keytool -list -alias CERT -keystoreCERT.keystore 

2)使用jdk的jarsigner工具對apk文件簽名
> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 
簽名過程需要輸入證書的密碼,一些重要的參數值說明如下(根據自己的需要要進行相應的修改): 
    CERT.keystore ---- 證書保存的文件名 
    CERT ---- 證書的別名 
待簽名的apk文件根根目錄下如果有文件夾“META-INFO”,請先刪除(重新簽名就需要這樣做)。
如果不想創建過程輸出太多信息,可以刪除“-verbose” 。
上述簽名會直接覆蓋原來的文件,如果不想被覆蓋而簽名爲另外的新文件 signed.akp,
只需將 to_sign.apk 改爲 -signedjar to_sign.apk signed.akp 即可。
簽名後可以使用如下命令驗證是否簽名成功: 
> jarsigner -verify to_sign.apk 
如果需要查看更詳細的驗證信息,可修改爲:
> jarsigner -certs -verbose -verify to_sign.apk 

3)使用android sdk的zipalign工具優化已簽名的apk文件
> zipalign -v 4 unaligned.apk aligned.apk 
注意要在簽名後再zipalign。這個工具不是jdk自帶的,而是在%ANDROID_HOME%\tools\zipalign.exe。


例子:

爲APK重新生成簽名

1、將證書複製到與需要重新簽名的apk文件相同的目錄下
2、進入該目錄下執行以下語句
 
jarsigner -verbose -keystore CERT.keystore -signedjar weibo_signed.apk 
netease_microblog_android_unsigned.apk CERT  

命令解釋:
jarsigner是Java的簽名工具,JDK自帶
-verbose參數表示:顯示出簽名詳細信息
-keystore表示使用當前目錄中的android.keystore簽名證書文件。
--signedjar weibo_signed.apk netease_microblog_android_unsigned.apk表示簽名後生成的APK名稱爲 weibo_signed.apk,未簽名的APK Android軟件名稱爲netease_microblog_android_unsigned.apk
CERT: 表示簽名文件的別名,生成證書的時候有書寫

執行以上操作之後在目錄下生成了weibo_signed.apk ,經過自己簽名的APK文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章