使用build.grade文件配置相关参数与多渠道打包

使用build文件配置相关参数

在Android开发过程中,有时我们需要在AndroidManifest.xml文件中配置一些常量参数,一般是以标签进行添加,例如友盟的APPID,或者是项目中需要自定义的参数。

一般情况下我们是在AndroidManifest.xml文件中直接配置如下代码

1
2
3
<meta-data
android:name="UMENG_APPKEY"
android:value="570ef55667e58e7d112231fe" />

有过完整项目开发的程序猿都应该知道,当项目越来越大的时候,Manifest文件也会越来越大,需要进行配置的参数也会越来越多,当我们想要对相关配置信息进行配置修改时就会特别头疼,例如我们在测试环境时由一套测试的配置参数,生产环境时又是一套生产的配置参数,每次在测试环境与生产环境之间进行切换时就得小心翼翼的进行修改。

其实在Android Studio中我们完全可以通过build.gradle对这些配置参数进行统一管理(Eclipse请自行绕道),配置过程如下:

修改Manifest文件(以友盟配置为例)

1
2
3
4
5
6
<meta-data
android:name="UMENG_APPKEY"
android:value="${UMENG_APPKEY_VALUE}" />
<meta-data
android:name="UMENG_MESSAGE_SECRET"
android:value="${UMENG_MESSAGE_SECRET_VALUE}" />

注意配置中value是以“${xxx}”格式填写

配置module下的build.gradle文件

打开build.gradle文件我们可以看到一个defaultConfig{}参数

1
2
3
4
5
6
7
8
defaultConfig {
applicationId "com.lcm.test"
minSdkVersion 15
targetSdkVersion 23
versionCode 14
versionName "1.0.0"
multiDexEnabled true //避免65536
}

ps:配置multiDexEnable为true可以解决程序65536的错误哦。

然后在defaultConfig{}中加入如下代码

1
2
3
4
5
6
7
8
9
 manifestPlaceholders = [
//友盟正式账号
UMENG_APPKEY_VALUE : "570ef55667e58e7d144521fe",
UMENG_MESSAGE_SECRET_VALUE: "e227334bae1c600195ed38c6935eb346",

//友盟测试账号
// UMENG_APPKEY_VALUE : "578857e367e58e4c6600161c",
// UMENG_MESSAGE_SECRET_VALUE: "1975041789c670c872afbfd4866fca87"
]

可以看到在manifestPlaceholders中是以key-value的形式配置了参数,key就是Manifest中配置的”${xxx}”中的”xxx”,而value值就是你需要配置的参数。我同时配置了一套测试参数,这样在开发与测试时只要注释掉另一套参数就OK啦,简单方便你值得拥有。

使用build.gradle进行多渠道打包

多渠道打包相信大家都不会陌生,一般情况下是项目中集成了类似于友盟或者TalkingData的统计代码时,需要根据应用的发布平台进行相应的配置,同样是在manifest中配置如下

1
2
3
<meta-data
android:name="UMENG_CHANNEL"
android:value="yingyongbao" />

进行多渠道打包可以有以下几种方法:

1、一个一个的去配置,每打一个包就去重新配置下一个渠道信息再打包。(累死你!)

2、使用第三方的多渠道打包工具,现在有好多第三方的多渠道打包工具,例如友盟、360等,一键生成多渠道包。

3、高级玩家使用Python脚本进行多渠道打包(并不会 -_-||)。

这里介绍的是使用gradle文件进行多渠道打包配置:

修改manifest文件

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

是不是很熟悉。。。

配置module下的build.gradle文件

在gradle文件的android{}中添加如下代码

1
2
3
4
5
6
7
8
9
10
11
productFlavors {
wangdoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
xiaomi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomipingtai"]
}
anzhi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "anzhishichang"]
}
}

或者进行批量处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
productFlavors {
baiduzhushou {}
yingyongbao {}
wandoujia {}
huaweipingtai {}
xiaomipingtai {}
meizupingtai {}
sanxingpingtai {}
qihu360 {}
anzhishichang {}
mumayi {}
}

productFlavors.all {
flavor ->
flavor.manifestPlaceholders = [
UMENG_CHANNEL_VALUE: name,
]
}

使用Android Studio进行多渠道打包

然后使用Android Studio进行正常打包操作,出现下面的界面时
dabao

可以选择单个渠道也可以全选,点击Finish,接下来Android Studio就会进行自动多渠道打包

打完收工,来杯咖啡吧。。。















PS:第一次写博客,还有点小激动呢,虽然内容简单,但总归是一个开始,加油!
jiayou

坚持原创技术分享,您的支持将鼓励我继续创作!