多渠道打包主要是为了方便统计应用在各应用市场分布的情况,便于产品和运营做一些针对应的产品运营推广方案。但是在使用多渠道打包的时候,衍生除了一系列的问题:
- 原生的打包方式比较繁琐,每次打包都需要花费大量时间;
- 现在为了产品的安全一般都会对应用进行加固,防止应用“裸奔”,如果进行加固的话会导致渠道信息丢失;
- 一般为了防止线上出现紧急的bug,会使用一些热修复的插件,这也为多渠道打包增加了一点点难度。
针对上述问题,本文提供了一种解决方式。
- 先打出正式包,如果集成了Thinker,可以使用期bakApk 下的基准包;(Tinker集成)
- 这时候先进行加固(需要注意的是:这个加固包是不包含签名的加固包)
- 签名需要使用特殊的签名方式,其中包含自动生成渠道包
一、打包方式(美团walle)
walle 有两种打包方式
1.通过gradle进行集成(可参考另一篇文章)
2.通过命令行使用(命令行wiki,此方法跟gradle配合使用,可实现一键出包,后续会更新)
二、加固方式
1. 360 加固
- 首先,需要准备对应的apk文件
- 其次,然后去 360加固网站 下载加固软件。
(1)、点击如图选项:
(2)、根据您的电脑型号选择要下载的加固版本:
(3)、下载后解压完成如图:
(4)、点击加固助手打开后我们只需要关注两项就可以了:
(5)、直接进行无签名加固,即可获取加固后的包
2. 腾讯乐固
- 下载乐固工具,链接:https://pan.baidu.com/s/1oTgXXTu99PYkFCDsRVDgLA 提取码:3w6t
官网已经不支持下载了,所以我分享了一个网盘的链接,也可以直接在腾讯云官网进行加固,然后下载 -
QQ或者微信登录,去获取云API秘钥,然后登录即可
-
去选取自己的apk,然后选择无签名,进行加固,即可获取加固后的包
360 加固以后会注入一些360 的广告,而且加固以后,只适用于360平台,兼容性方面需要考虑,所以建议使用腾讯的乐固(谨代表个人建议)
三、walle生成渠道包
前面提到过,如果使用walle生成渠道包,那么加固以后渠道信息就丢失了,所以推荐使用ProtectedApkResignerForWalle。ProtectedApkResignerForWalle是用于解决walle产生的加固问题,用的是walle的打包CLI。多渠道打包时,先加固,然后把未签名的apk使用此脚本进行多渠道打包即可。
1、需要准备python 环境(mac 自带python2.x版本和3.x版本,window需要单独配置)
2、按照config.py文件中的注释改成自己项目配置(需要注意的是sdkBuildToolPath所对应的版本要高于25.0)
3、将已经加固好的包(未签名的包)放到脚本工具根目录下,即xxx.apk
4、各种渠道的定义是在channel这个文件中,请根据项目情况修改
5、运行命令 python ApkResigner.py,即可自动生成所有渠道包。
附上一张成功以后的图
6、生成的渠道包在对应指定的文件夹下