Android多渠道打包技术

背景

我们都会有这样的一个场景构建好的APP最终会上传到应用市场,我们如何统计每一个应用市场的投放效果呢,我们需要在每个APK中添加标记即渠道号,APP打开的某个时机将渠道信息,我们下面我们来分析一下如何实现。

方案

首先我们的方案要尽可能的减少构建时间,不需要重新对源码进行编译。因为构建一个包对于一个大型APP都需要20分钟,如果构建100多个渠道,要等待好几天了。。,所以我们需要从产出的APK入手,对APK文件做处理,从而大大减少构建时间。

我们需要提前构建一个没有渠道的APK,输入原始APK文件和渠道号,产出包含渠道号标记的APK.

1.使用AAPT添加渠道文件:

aapt add base.apk asserts/channel.txt

2.使用zipalign工具将APK进行字节对齐

zipalign -f 4 base.apk  app_zipalign.apk}

3.使用apksigner对apk重新签名

java -jar apksigner sign --v1-signer-name CERT -ks ${mStore} --ks-key-alias ${mAlias} --ks-pass pass:${mStorePassword} --key-pass pass:${mAliasPassword} --out ${outFile.absolutePath} ${zipFile.absolutePath}"

参考文献

深入浅出Android打包 – _OUTMAN_的个人空间 – OSCHINA – 中文开源技术交流社区

美团Android自动化之旅—生成渠道包