manifestplaceholders 可以写多个吗,还是必须写一个里面

 我来答
耶耶的帐号
2017-07-12 · TA获得超过243个赞
知道答主
回答量:407
采纳率:0%
帮助的人:132万
展开全部
最后去google了一番,发现有些方法,是在gradle文件里切换各种不同的AndroidManifest.xml文件,感觉这样也太麻烦些了。。。后面搜索了些,发些大家写得都差不多,发现一个在gradle利用manifestPlaceholders这个属性来替换渠道值的方法,但我按照这个方法,没有成功,我就去扒官方的文档才彻底搞定。下面就讲讲怎么实现的吧。
一般用渠道的统计无非是用友盟或者其它之类的,今天就以友盟的为例吧。
渠道信息一般在AndroidManifest.xml中修改以下值:

Java

<meta-data android:name="UMENG_CHANNEL" android:value="wandoujia" />

<meta-dataandroid:name="UMENG_CHANNEL"android:value="wandoujia"/>

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

Java

<meta-dataandroid:name="UMENG_CHANNEL"android:value="${UMENG_CHANNEL_VALUE}" />

<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/>

其中${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还是会分享给大家。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式