现在市场上很多app应用存在于各个不同的渠道,大大小小几百个,当我们想要在发布应用之后统计各个渠道的用户下载量,我们就要进行多渠道打包。
具体实现步骤:
1、(以友盟为例)在manifest文件的application下添加以下代码:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
这段配置,value那里就是wandoujia,360之类的渠道名称,但是我们在这里不会去写渠道名,写的是一个占位符,后面gradle编译的时候会动态的替换掉它
2、在app的build.gradle的android中添加以下代码
productFlavors{
xiaomi{}
qihu360{}
wandoujia{}
baidu{}
yingyongbao{}
}
productFlavors.all{
flavor->flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
xiaomi、baidu是渠道的名称,只要将这些渠道名称赋值给友盟的UMENG_CHANNEL_VALUE,每个渠道就是flavor的名称
如果gradle版本是3.0以上,则需要在app的build.gradle中的android设置flavor的风格一致,如下添加:
flavorDimensions "versionCode"
3、编译多渠道的包
点击控制台右侧的Gradle,打开:app下的install,可以看到所有渠道的的各种包,双击就可以,但是还需要手动打开模拟器的app;如果想一次性把所有的包都打包好,可以双击击:app下的build中的assemble
4、获取渠道名称
try {
ApplicationInfo applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
String channe = applicationInfo.metaData.getString("UMENG_CHANNEL");
tv01.setText(channe);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
推荐参考:https://blog.youkuaiyun.com/hpc19950723/article/details/60592643