Android 多渠道打包
需要了解的知识
1、为什么需要多渠道打包
2、多渠道打包的方式及其优缺点配置及操作步骤,是否存在风险
3、打包后各个apk真正区别是什么
4、涉及到的知识就是版本比较多的时候,需要自定义apk名字达到好区分的目的
针对上述问题进行一一分析
1、为什么需要多渠道打包
原因:在打包的时候添加标识,当请求网络的时候会携带渠道信息,这样后台能进行相应运营统计。
2、多渠道打包的方式:
1、友盟多渠道打包方式(传统方式)
①、在清单文件中配置meta-data文件,渠道名一般由产品经理定义,代码如下:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
②、在build.gradle中android{}中配置如下代码:
productFlavors{
wandoujia{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi{
manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
}
③、优化
productFlavors{
wandoujia{}
xiaomi{}
}
//下面就是优化增加的代码
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
④、在代码中获取渠道信息,代码如下:
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) {
}
return "";
}
⑤在app/build/outputs/apk中就能看到自动打好的渠道包
优缺点:
这种打包方式比较安全,是传统打包方式。
缺点是:性能比较低
2、美团打包方式:
原理:apk文件其实可以看做是一个压缩包,我们把一个Android应用包当作zip文件包进行解压,然后发现在签名生成的目录下(META-INF)添加一个空文件不需要重新签名。利用这个机制,该文件的文件名就是渠道名。这种方式不需要重新签名等步骤,非常高效。
美团打包工具下载地址:
https://github.com/GavinCT/AndroidMultiChannelBuildTool
优缺点:
优点是:打包速度快
缺点是:如果google修改了打包规则,(META-INF)添加空文件需要重新签名,那么这种方式就不可取。不安全,渠道商可以通过工具修改渠道,如果一个渠道商,通过网络劫持和篡改渠道的组合方式来获取 暴利,对于程序开发者来说可能会存在着巨大的经济损失
打包后各个apk真正区别
就是给每一个apk安装包添加了标签,有了特殊标识,根据这些标识,你可以针对不同的apk进行统计分析。可以作为运营下一步的公关方向提供参考。
自定义apk名字
当多渠道打包的时候,打出的包都是按照一定规则生成的,如果打多个版本的包时,因为规则相同,我们就不能很好的区分哪个是哪个版本的,这个时候就需要自定义apk名字,把版本号或者是版本名字放在规则中,这样打包的时候就会带上版本信息,这样就我们就很好的区分开了。
详细可以参考此文自定义apk名字的文章
https://www.cnblogs.com/bluestorm/p/6228085.html