Android 打生產包(release)生成密鑰(證書)及簽名


參考官方文檔

生成密鑰(證書)文件

keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 
說明:
 
keytool 是一個工具命令
-v  指的是將生成證書的詳細信息打印到終端
-genkey 表示生成key
-keystore release-key.keystore 指定生成的密鑰文件名,release-key.keystore就是指定的文件名,.keystore是證書的擴展名
-alias alias_name 別名,這里指定別名為alias_name
-keyalg RSA 生成密鑰文件所用的算法,這里為RSA 
-validity 10000 該密鑰的有效天數
-keysize 2048 指定2048位的密鑰

執行上述命令后,會在當前目錄下生成一個release-key.keystore文件,如果當前目錄下已有同名文件,則執行命令時會報密碼錯誤(密碼與之前創建這個密鑰文件的密碼不同時)

過程中會要求設置keystore密碼和key密碼。(這個文件只需生成一次)

 

 生成的這個證書文件及密碼一定要保存好,丟了的話,后面修改App后,再發布,已安裝了舊版APP的用戶就不能直接升級了,只能重新安裝。

查看證書信息

keytool -list -v -keystore release-key.keystore

然后輸入口令,會顯示此密鑰文件中的相關信息,包括SHA1等

 

打生產包

ionic cordova build android --release

成功的話會在以下位置生成apk文件

ionic3(項目目錄/platforms/android/build/outputs/apk/android-release-unsigned.apk)
ionic4(項目目錄platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk)

 

綁定密鑰(證書)文件

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release-key.keystore apk/android-release-unsigned.apk alias_name

 

 

 

 

說明:

jarsigner

 工具名稱
-verbose  指的是將生成證書的詳細信息打印出來,顯示在dos窗口
 -keystore release-key.keystore   意思是簽名所使用的數字證書的位置,沒有寫路徑則表示在當前目錄下
 apk/android-release-unsigned.apk  意思是apk所在的文件位置,注意apk的/符號指的是在名字為apk這個文件的里面,如果不指定目錄默認為當前目錄
cordova-demo  指的是在生成簽名的時候使用的別名
 -sigalg與-digestalg  密鑰格式

 

 

 

 

 

 

命令完成后這個APK就已經改變

如果出現以下報錯
java.util.zip.ZipException: invalid entry compressed size (expected 13283 but got 12029 bytes)

可以嘗試在命令中加 -signedjar myname-singed.apk

意思就是綁定簽名后生成一個新的APK文件,后面myname-singed.apk是自己起的文件名。

 

打包簽名注意事項:

打debug包時計算機會默認生成一個簽名自動綁定debug包,所以debug包不可以再加手動簽名,會導致沖突,但是不同的機器上面打出來的debug包生成的簽名都會不同,無法覆蓋安裝,
打release包時需要手動創建簽名文件,隨后將release包與簽名綁定。沒有簽名文件的release包安裝時會提示沒有安全證書,無法安裝apk包。在不同機器上打出來的release包只要是綁定的簽名文件一致,就可以實現覆蓋安裝

 

Align壓縮優化

zipalign -v 4 原apk文件 壓縮后apk文件,例:

zipalign -v 4 android-release-unsigned.apk MyExrApp.apk

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM