Android多渠道打包和加固那些事

多渠道两种打包方式:

一.利用android studio的productFlavors去多渠道打包。速度慢,让人崩溃。但与市场上的一些加固无缝接入。

二.利用美团的walle,快速高效,但是在加固上需要特殊处理。 

首先介绍第一种:

配置渠道

我们在项目的build.grade的android中添加:

Android多渠道打包和加固那些事_第1张图片

然后在签名打包时候就可以单一选中或者多选择渠道打包了

Android多渠道打包和加固那些事_第2张图片

重点介绍第二种:(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加固后获取不到渠道信息 - 渠道统计失败的问题

你可能感兴趣的:(Android多渠道打包和加固那些事)