【场景说明】
当我们Android项目里面包含一个或者多个module的时候,这些module需要根据渠道去配置不同的信息,比如渠道对应的versionCode,versionName,
网络请求的baseUrl,测试账号等等。那么我们可以使用一个公共的gradle去配置这些信息,在编译打包版本的时候,无需手动去来回切换了。
build variants:图示如下
1.当切换到 xxxxDebug时根据构建体对应不同的测试账号
2.当切换到xxxRelease时,则不配置信息
【主要代码】
task handleMpaasConfig() {
def parameter = gradle.getStartParameter().getTaskRequests().toString()
println "Build parameter value==" + parameter
def re = parameter.contains("assemble") ? "assemble(\\w+)(Release|Debug)" : "generate(\\w+)(Release|Debug)"
Pattern pattern = Pattern.compile(re)
Matcher matcher = pattern.matcher(parameter)
if (matcher.find()) {
def variant = matcher.group(0)
println "Build Variant value==" + variant
def start = variant.startsWith("assemble") ? "assemble" : "generate"
def end = variant.endsWith("Release") ? "Release" : "Debug"
getTestAccount(variant, start, end)
}
}
def getTestAccount(String variant, String start, String end) {
if ("Release".equals(end)) {//如果是正式服,则不配置数据
ext.testAccount = '""'
ext.channel = '""'
} else {//根据不同的构建变体名称,创建测试账号
if (variant.equals(start + "Demo01" + end)) {
ext.testAccount = '"demo1-123456"'
ext.channel = '"DemoChannel01"'
} else if (variant.equals(start + "Demo02" + end)) {
ext.testAccount = '"demo2-123456"'
ext.channel = '"DemoChannel02"'
} else {
println "Build 03 value=="
ext.testAccount = '"demo3-123456"'
ext.channel = '"DemoChannel03"'
}
}
}
【实现效果】
【Demo 链接】
https://github.com/lizhaoXXX/TestGradle
https://github.com/lizhaoXXX/TestGradle.git
gradle配置版本基础信息非常好用,不用改来改去!爽
gradle配置版本基础信息非常好用,不用改来改去!爽
gradle配置版本基础信息非常好用,不用改来改去!爽