build gradle 代码中使用的变量取决于风格和构建类型

build gradle variables to be used in code depending on flavor AND build type

有没有办法在我的代码中使用来自 build.gradle 的变量,这取决于 flavor 和 buildType?

在此示例中:Is it possible to declare a variable in Gradle usable in Java? 新资源值仅取决于它是调试还是发布构建类型。

我希望每个可能的 buildVariant 都有一个变量。

像这样:

flavor1Debug   => resValue "string", "app_name", "App 1 Debug"
flavor1Release => resValue "string", "app_name", "App 1"
flavor2Debug   => resValue "string", "app_name", "App 2 Debug"
flavor2Release => resValue "string", "app_name", "App 2"

是否有通过 build.gradle 或不包含开关或 if else 语句的其他方式来执行此操作的好方法?

在 build.gradle 中,对于您的应用,实现此目的的一种方法是:

buildTypes {
    debug {
        productFlavors.flavor1.buildConfigField "String", "app_name", "\"App 1 Debug\""
        productFlavors.flavor2.buildConfigField "String", "app_name", "\"App 2 Debug\""
    }
    release {
        productFlavors.flavor1.buildConfigField "String", "app_name", "\"App 1\""
        productFlavors.flavor2.buildConfigField "String", "app_name", "\"App 2\""
    }
}

请注意,您需要在 buildTypes 之前定义 productFlavors{} 块。