繁体   English   中英

如何在 gradle 任务中获取当前风味名称?

[英]How to get current flavor name in gradle task?

我需要知道 gradle 任务中的当前风格:

task getAssets(type: Copy) {

   //...

   def currentFlavor = getCurrentFlavor();

   // ...
}

def getCurrentFlavor() {
    Gradle gradle = getGradle()
    String tskReqStr = gradle.getStartParameter().getTaskRequests().toString()

    Pattern pattern

    if (tskReqStr.contains("assemble"))
        pattern = Pattern.compile("assemble(\\w+)(Release|Debug)")
    else
        pattern = Pattern.compile("generate(\\w+)(Release|Debug)")

    Matcher matcher = pattern.matcher(tskReqStr)

    if (matcher.find()) {
        projectName = matcher.group(1).toLowerCase()
    } else {
        println "NO MATCH FOUND"
    }
}

但它不起作用,因为gradle.getStartParameter().getTaskRequests().toString()返回

[DefaultTaskExecutionRequest{args=[],projectPath='null'}]

像这样在 Gradle 中添加产品风味

 flavorDimensions "environment"
productFlavors {
    staging {
        dimension "environment"
        applicationId "com.***.***"
        versionCode 1
        versionName "0.0.1"
    }
    prod {
        dimension "environment"

        applicationId "io.**.**"
        versionCode 1
        versionName "0.0.1"
    }
}

现在你可以得到这样的味道

BuildConfig.FLAVOR

在 gradle

  applicationVariants.all { variant ->
    variant.outputs.all {
        def flavor = variant.name
        def versionName = variant.versionName
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM