【場(chǎng)景說(shuō)明】
當(dāng)我們Android項(xiàng)目里面包含一個(gè)或者多個(gè)module的時(shí)候,這些module需要根據(jù)渠道去配置不同的信息,比如渠道對(duì)應(yīng)的versionCode,versionName,
網(wǎng)絡(luò)請(qǐng)求的baseUrl,測(cè)試賬號(hào)等等。那么我們可以使用一個(gè)公共的gradle去配置這些信息,在編譯打包版本的時(shí)候,無(wú)需手動(dòng)去來(lái)回切換了。
build variants:圖示如下
1.當(dāng)切換到 xxxxDebug時(shí)根據(jù)構(gòu)建體對(duì)應(yīng)不同的測(cè)試賬號(hào)
2.當(dāng)切換到xxxRelease時(shí),則不配置信息

build variants.jpg
【主要代碼】
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)) {//如果是正式服,則不配置數(shù)據(jù)
ext.testAccount = '""'
ext.channel = '""'
} else {//根據(jù)不同的構(gòu)建變體名稱,創(chuàng)建測(cè)試賬號(hào)
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"'
}
}
}
【實(shí)現(xiàn)效果】

不同渠道編譯獲取的信息.jpg
【Demo 鏈接】
https://github.com/lizhaoXXX/TestGradle
https://github.com/lizhaoXXX/TestGradle.git
gradle配置版本基礎(chǔ)信息非常好用,不用改來(lái)改去!爽
gradle配置版本基礎(chǔ)信息非常好用,不用改來(lái)改去!爽
gradle配置版本基礎(chǔ)信息非常好用,不用改來(lái)改去!爽

你們不要再學(xué)習(xí)了,我快趕不上了.png