1. 程式人生 > >Ionic3 Android生成簽名打包

Ionic3 Android生成簽名打包

首先需要Android環境,並且機器上安裝配置了jdk,然後ionic環境都齊備。

APP簽名就是應用要安裝到Android手機上的一個認證金鑰。而這個簽名是應用開發者自己生成,相同簽名的應用高版本是可以覆蓋低版本的應用的。同時,APP簽名也是應用打包釋出到應用市場的必要元素。

在開發過程中,肯定會用到真機除錯,如果沒有特意去生成簽名供應用使用,Android 的ADT會提供一個預設的debug版本的簽名,也就是debug.keystore,存放在:


,以便使開發者能夠將應用安裝到手機上預覽並且除錯,但debug.keystore的金鑰是隻能用於除錯階段,真正要釋出那麼肯定是需要自己生成一個.keystore的金鑰的。

接下來,就開始生成簽名的工作:

需要用到:

1、keytool:生成keystore檔案,是JDK自帶的加密工具,只需生成一次,然後儲存在本地,之後簽名直接使用這個檔案不需要重新生成

2、jarsigner:對apk簽名,是JDK自帶的簽名工具,如果要將apk釋出到android應用市場,就需要對release版本的apk檔案使用keystore檔案進行簽名

3、zipalign:是Android的build-tool的壓縮程式碼工具,可以將apk體積最小化

三個工具目錄如下圖(分別是我自己jdk和Android SDK的安裝目錄):


準備工作就緒後,開始先生成一個未簽名的apk:

首先執行:ionic cordova build android --prod --release,最終執行完會在以下目錄生成apk檔案(PS:我加了crosswalk,所以會有兩個apk):


然後使用keytool生成keystore檔案,也就是數字簽名:

keytool -genkey -v -keystore myapp.keystore -alias myapp.keystore -keyalg RSA -validity 36500
-genkey		意味著執行的是生成數字證書操作
-v			表示將生成證書的詳細資訊打印出來,顯示在dos視窗中
-keystore myapp.keystore	表示生成的數字證書的檔名為myapp.keystore(myapp是自己起的名稱)
-alias myapp.keystore 		表示證書的別名為myapp.keystore,可以不和上面的名稱一樣
-keyalg RSA		表示生成金鑰檔案所採用的演算法為RSA
-validity 36500		表示該數字證書的有效期為36500天

執行該命令過程會要求輸入金鑰口令以及其他資訊,看著填就行


使用jarsigner為你的apk進行簽名

jarsigner -verbose -keystore myapp.keystore -signedjar E:\myapp.apk E:\test\platforms\android\build\outputs\apk\android-armv7-release-unsigned.apk myapp.keystore

-verbose    表示將簽名過程中的詳細資訊打印出來,顯示在控制檯視窗中
-keystore myapp.keystore    表示簽名所使用的數字證書所在位置
-signedjar E:\myapp.apk E:\test\platforms\android\build\outputs\apk\android-armv7-release-unsigned.apk  表示給E盤工程目錄下的android-armv7-release-unsigned.apk檔案簽名,簽名後的檔案為E盤下的myapp.apk
myapp.keystore      表示證書的別名,對應於生成數字證書時-alias引數後面的名稱

如下圖:



到此,其實已經生成了一個可以釋出到應用市場的apk了,如果想要更好,那麼建議再使用ADT的zipalign對apk進行壓縮一下。

首先到Android SDK目錄去

.\\zipalign -v 4 E:\myapp.apk E:\myapp_compress.apk
-v 	表示在DOS視窗打印出詳細的優化資訊 
E:\myapp.apk E:\myapp_compress.apk 	表示對已簽名檔案 E:\myapp.apk進行壓縮優化,優化後的檔案為E:\myapp_compress.apk



over!