多渠道两种打包方式:
一.利用android studio的productFlavors去多渠道打包。速度慢,让人崩溃。但与市场上的一些加固无缝接入。
二.利用美团的walle,快速高效,但是在加固上需要特殊处理。
首先介绍第一种:
配置渠道
我们在项目的build.grade的android中添加:
然后在签名打包时候就可以单一选中或者多选择渠道打包了
重点介绍第二种:(windows)
利用android studio打出apk,然后利用美团的walle配置直接打包
对该工具的原理感兴趣的同学,可以移步美团Android新一代渠道包生成工具进行了解。
但是问题来了,如果按照这种方式去加固,需要对所有包一一加固,速度慢,而且加固之后不能获取到对应的渠道名了,对于渠道埋点受到影响。所以借鉴网上多方资料,对于walle打包和加固的结合,请网上看:
步骤1:只加固不签名
之前打出的apk,有的说需要签名,有的说不需要签名,但对我的理解是去加固的apk肯定是不要签名的,但是加固工具当你把apk传给它进行加固时,如果有签名的会把签名给去掉然后进行加固,最后得到的加固包就是所有步骤的一个基础。ps:反正我把签名的包和不签名的包两种都去加固了,最后都是可行的,还有一点重要的是:如果用pc版 的加固助手时,请把自动签名的勾去掉。
步骤2:zipalign,apksigner加入path中
因为上面的两个命令在C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\25.0.2(需要25以上版本)中,所以为了调用方便,请加入系统环境中
步骤3:优化 ,zipalign -v 4 【加固包路径】【优化包想要放的路径】
举例:zipalign -v 4 C:\Users\robin\Desktop\xxx.apk C:\Users\robin\Desktop\xxx_zipalign.apk
步骤4:重新v2签名,apksigner sign --ks [你的签名文件] [优化过的apk路径]
apksigner sign --ks D:\xxx.keystore C:\Users\robin\Desktop\xxx_zipalign.apk
执行上面语句会提示密码:
Keystore password for signer #1: xxxxx
执行完之后xxx_zipalign.apk就是签名过的包,还是原来那一个
步骤5:验证是否是v2签名,需要CheckAndroidV2Signature.jar,下载地址:https://github.com/bihe0832/AndroidGetAPKInfo/blob/master/
java -jar 【CheckAndroidV2Signature的路径】【签名过的包路径】
java -jar C:\Users\robin\Desktop\CheckAndroidV2Signature.jar C:\Users\robin\Desktop\xxx_zipalign.apk
返回true就行
{"ret":0,"msg":"ok","isV2":true,"isV2OK":true}
步骤6:walle注入渠道:需要walle-cli-all.jar,下载地址:https://github.com/Meituan-Dianping/walle/blob/master/walle-cli/walle-cli-all.jar
单个注入:
java -jar walle-cli-all.jar put -c [单个注入的名称(例如qq,360..)] [apk路径]
java -jar walle-cli-all.jar put -c qq xxx_zipalign.apk
批量注入:
java -jar walle-cli-all.jar put -c [channel是个渠道名称的列表文件] [apk路径]
java -jar walle-cli-all.jar batch -f channel xxx_zipalign.apk
所有的输出路径都跟原apk的路径一致
参考资料:
支持Android7.0 Signature V2 Scheme 多渠道打包,并解决类似360加固后获取不到渠道信息 - 渠道统计失败的问题
网友评论