方案 | 介绍 | 优缺点 |
---|---|---|
友盟多渠道打包方案 | 利用meta-data记录每个渠道,每个渠道都需要走一次打包流程 | 缺:打包速度慢 |
美团多渠道打包方案1 | 向apk的META-INF目录写入空文件,文件名即为渠道名 | 优:快速缺:Android7.0之后打包会记录文件结构,新增空文件导致签名不一致,无法使用 |
美团多渠道打包方案2 – Walle | 通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包 | 优:速度快,可单击可部署到服务器 |
360多渠道打包方案 – packer-ng-plugin | 利用ZIP压缩包的摘要写入渠道信息 | 优:高速,部署简单 |
友盟多渠道打包方案
AndroidManifest.xml中加入如下meta-data
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
项目级build.gradle如下配置
productFlavors {
wandoujia {}
baidu {}
c360 {}
uc {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
美团多渠道打包方案
简单来讲,原本的ZIP文件格式由三个区Content of ZIP entries 、 Central Directory、End of Central Directory组成,Walle会在Central Directory之前的空白区域加入APK Signing Block区用来记录渠道信息