用户登录
用户注册

分享至

gradle android 多渠道

  • 作者: 丿CraZy小叶
  • 来源: 51数据库
  • 2020-09-30
文档说明,渠道信息通常需要在AndroidManifest.xml中配置如下值:
11

上面的value值Channel_ID就是渠道标识。我们的期望的就是在编译时候这个值能够自动变化以满足区分多渠道的需求。
(一)在AndroidManifest.xml里设置动态渠道变量
123123

(二)在build.gradle设置productFlavors
这里假定我们需要打包的渠道为酷安市场、360、小米、百度、豌豆荚
android {
productFlavors {
kuan {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
}
qh360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]



  最后去google了一番,发现有些方法,是在gradle文件里切换各种不同的androidmanifest.xml文件,感觉这样也太麻烦些了。。。后面搜索了些,发些大家写得都差不多,发现一个在gradle利用manifestplaceholders这个属性来替换渠道值的方法,但我按照这个方法,没有成功,我就去扒官方的文档才彻底搞定。下面就讲讲怎么实现的吧。
一般用渠道的统计无非是用友盟或者其它之类的,今天就以友盟的为例吧。
渠道信息一般在androidmanifest.xml中修改以下值:

java





首先你必须在androidmanifest.xml中的meta-data修改以下的样子:

java





其中${umeng_channel_value}中的值就是你在gradle中自定义配置的值。
build.gradle文件就利用productflavors这样写:

java

productflavors {wandoujia {manifestplaceholders = [umeng_channel_value: "wandoujia"]}baidu {manifestplaceholders = [umeng_channel_value: "baidu"]}c360 {manifestplaceholders = [umeng_channel_value: "c360"]}uc {manifestplaceholders = [umeng_channel_value: "uc"]}}

productflavors{
wandoujia{
manifestplaceholders=[umeng_channel_value:"wandoujia"]
}
baidu{
manifestplaceholders=[umeng_channel_value:"baidu"]
}
c360{
manifestplaceholders=[umeng_channel_value:"c360"]
}
uc{
manifestplaceholders=[umeng_channel_value:"uc"]
}
}

其中[umeng_channel_value: "wandoujia"]就是对应${umeng_channel_value}的值。
这样生成apk时,选择相应的flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。
多渠道打包从此就非常快捷了,今天就写到这里,以后android studio有相应的tips还是会分享给大家。
软件
前端设计
程序设计
Java相关