什么是多渠道包
渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等
产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。
为什么要提供多渠道包
国内存在着有众多的应用市场,产品在不同的渠道可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。
在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计。
友盟的多渠道打包
友盟就提供了多渠道打包的方式,可用于渠道统计等。
现在Android的构建工具换成了gradle,通过gradle,简单配置后就可以实现自动打所有渠道包。
补充知识
了解下BuildTypes、Flavors、BuildVariants三个定义:
1、BuildTypes : 构建类型,AndroidStudio的Gradle组件默认提供给了“debug”“release”两个配置。
2、Flavors : 产品渠道,可以根据productFlavors,针对不同的渠道配置个性化apk
3、BuildVariants:每一个buildtype和flavor组成一个buildvariant
1.按照umeng的要求,manifest文件中需要有(在application下,和activity是并列关系):
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" />
2.app的build.gradle配置
1)写法一
productFlavors { yingyongbao { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"] } huawei { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"] } xiaomi { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } sc360 { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"] } baidu { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"] } jky { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "jky"] } }
2)写法二
productFlavors { yingyongbao{} huawei{} xiaomi{} sc360{} baidu{} jky{} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
如果没有错误的话,效果是这样的
打包发布后,在友盟后台看到的效果是这样的