Android 全局公共gradle 根据渠道配置相关信息(Build varaint)

【场景说明】

当我们Android项目里面包含一个或者多个module的时候,这些module需要根据渠道去配置不同的信息,比如渠道对应的versionCode,versionName,
网络请求的baseUrl,测试账号等等。那么我们可以使用一个公共的gradle去配置这些信息,在编译打包版本的时候,无需手动去来回切换了。

build variants:图示如下
1.当切换到 xxxxDebug时根据构建体对应不同的测试账号
2.当切换到xxxRelease时,则不配置信息

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)) {//如果是正式服,则不配置数据
        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"'
        }
    }
}



【实现效果】

不同渠道编译获取的信息.jpg



【Demo 链接】

https://github.com/lizhaoXXX/TestGradle

https://github.com/lizhaoXXX/TestGradle.git



gradle配置版本基础信息非常好用,不用改来改去!爽
gradle配置版本基础信息非常好用,不用改来改去!爽
gradle配置版本基础信息非常好用,不用改来改去!爽

你们不要再学习了,我快赶不上了.png

你可能感兴趣的:(Android 全局公共gradle 根据渠道配置相关信息(Build varaint))