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!