如何在gradle脚本中运行Android Flavor Name

时间:2016-11-10 13:35:17

标签: android gradle android-productflavors

这次我有这个问题,我试图在gradle脚本中获取当前的味道。我试过这里给出的答案How to get current flavor in gradle  没有运气。

我在一些答案中看到他们使用

// Get all flavors
android.productFlavors.all { flavor ->
if (flavor.name.equals("flavorName")) {
    // do what you like
}
// ...
}

但我也没有运气,因为我收到以下错误:>无法为任务获取未知属性'android'

所以我不知道如何获得当前的味道,任何帮助将非常感谢,谢谢!

编辑:我需要做的是执行一段针对每种风格不同的代码,我当前的想法是知道所选的构建变体在任务中执行此操作,但是如果有任何其他方法可以做这将是完美的。

2 个答案:

答案 0 :(得分:0)

如果您在应用级gradle脚本中使用“android”闭包,则可能会出现此错误。确保在

中使用它

答案 1 :(得分:0)

我已经发布了一个有效的解决方案here,即:

以下函数完全返回当前风味名称

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() )
        return matcher.group(1).toLowerCase()
    else
    {
        println "NO MATCH FOUND"
        return "";
    }
}

您还需要

import java.util.regex.Matcher
import java.util.regex.Pattern

在开头或你的脚本。 在Android Studio中,这可以通过编译" Make Project"或者"调试应用程序"按钮。

相关问题