昨天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 --channels=@XX.txt --output=apk存放目录 被签名的apk 。大功告成!
附录:V1、V2签名的区别:
v1签名只对未压缩对文件内容进行验证,所以APK在签名之后依然可以修改--文件可以移动,甚至可以重写压缩。
v2签名验证了归档中对所有字节,而不是单独的ZIP条目。增强签名格式的安全性和可拓展性,并且在性能方面也有提升--不需要进行昂贵的解压,从而加快应用安装时间。