多渠道打包的用途(为什么要进行多渠道打包)
通过多渠道打包,将对应的 APP 发布到对应的应用渠道市场上
再利用友盟统计,来统计不同渠道上的 APP 下载量、安装量等数据信息
下载量:用户下载一次,下载量记为1次
安装量:同一个手机安装多次(不论从哪个应用市场进行的下载安装),安装量都记为1次
第一步:
在 AndroidManifest.xml 中的 Application 节点下添加如下代码
这里之所以命名 name 为 UMENG_CHANNEL,是因为我们将多渠道导包与友盟统计配合使用
<!--多渠道打包 - 友盟统计-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
第二步:
在 module 的 build.gradle 中的 android 节点下添加如下代码
//多渠道打包 - 友盟统计
productFlavors {
yingyongbao {}
wandoujia {}
xiaomi {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
第三步:
在 module 的 build.gradle 中的 android 节点下的 buildTypes 节点下的 release 版本配置中添加如下代码
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为app_v1.0_xxxx-xx-xx_xxxx.apk
// def fileName = "app_v${defaultConfig.versionName}_${releaseTime()}.apk"
// 输出apk名称为app_v1.0.apk
// def fileName = outputFile.name.replace(".apk", "app_v${defaultConfig.versionName}.apk")
// 输出apk名称为app_v1.0_yingyongbao.apk
def fileName = "app_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
第四步:
生成 release 的 apk
点击 android studio 工具栏的 Build,选择 Generate Signed APK…,等待生成多渠道包,可能有点慢
至此、多渠道打包结束
如果用的是 友盟统计,只需按照友盟统计的官方文档进行集成友盟统计即可
除了上述原始的多渠道打包方式外,还有其他的多渠道打包方式,如美团多渠道打包、360多渠道打包等,打包速度极快,15秒钟可打包300左右,当然也是存在缺陷的,个人觉得一共就发布几个主流的应用渠道的话,使用原始的多渠道打包就好,慢不多少,还规避了一些风险
备注:
如果是没用到友盟统计的话,可以在需要的地方,添加如下代码
将 getChannel() 方法获取到的 渠道名 发送到服务器进行相应的统计。
/**
* 获取渠道名称
* 用于多渠道打包
*
* @return
*/
private String getChannel() {
try {
PackageManager pm = getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
return appInfo.metaData.getString("UMENG_CHANNEL");
} catch (PackageManager.NameNotFoundException ignored) {
ignored.printStackTrace();
}
return "";
}
至此、Over