昨天APP終於要上線!!!項目批量打包使用的是 packer-ng-plugin 2.0.1,其他應用渠道打包完成之後專攻360APK。衆所周知,360應用市場上傳必須加固,加固完成後的APK需要重新簽名、添加渠道信息,可參考:#86、#64,方可上傳應用市場。在簽名和添加渠道信息的過程中遇到一些坑,分享出來。
使用gradle clean assembleRelease打出APK放在360加固工具加固後,下載放在本地。packer-ng-plugin 2.0.1已經支持V2簽名,所以接下來APK簽名是V2了, 可以參考Android開發之通過apksigner對apk進行v2簽名,裏面很詳細介紹瞭如何使用Android/SDK/../build-tools工具進行簽名的。這裏只是把一些命令行記錄下來,分以下幾個步驟:
1、zipAlign:首先進入到build-tools目錄下,輸入命令行:
./zipalign -v -p 4 input.apk out.apk (Mac)
./zipalign.exe -v -p 4 input.apk out.apk (Window)
2、apksigner:該目錄在build-tools/lib,注意,v2簽名是在7.0後才推出的,所以請在sdk>25才能找到apksigner.jar。首先進入build-tools/lib下,輸入命令行
java -jar apksigner.jar sign --ks xxx.jks --ks-key-alias 自己指定的alias --ks-pass pass:密碼 --key-pass pass:密碼 --out output.apk input.apk
查看apk簽名狀態:java -jar apksigner.jar verify -v my.apk
至此V2簽名已被搞定,接下來就是使用packer-ng-plugin添加渠道信息了。GitHub詳細地介紹瞭如何使用命令行腳本打包渠道信息,只想說一句,開發者需要下載packer-ng-2.0.1.jar工具,爲了方便以後打包,請放置在項目根目錄下,然後在AS輸入命令行:java -jar pack-ng-2.0.1.jar genrate [email protected] --output=apk存放目錄 被簽名的apk 。大功告成!
附錄:V1、V2簽名的區別:
v1簽名只對未壓縮對文件內容進行驗證,所以APK在簽名之後依然可以修改--文件可以移動,甚至可以重寫壓縮。
v2簽名驗證了歸檔中對所有字節,而不是單獨的ZIP條目。增強簽名格式的安全性和可拓展性,並且在性能方面也有提升--不需要進行昂貴的解壓,從而加快應用安裝時間。