为不同的风格和不同的构建类型生成不同的gradle常量 - Android

时间:2018-02-03 18:09:33

标签: android android-gradle constants

要求非常简单。但我没有找到任何办法。                                                                                  我有一个两种风格的应用程序:原始和黑色。

SqlDataReader

每种风味都有两种构建类型:调试和发布

我正在为不同的构建类型生成运行时gradle常量“APP_INFO”。

productFlavors {
    original {

    }
    black {
        applicationIdSuffix ".black"
        versionNameSuffix "-black"
    }
}

我现在为BuildConfig.APPINFO获取的内容

flavor:original,buildType:debug。 APPINFO“DEBUG”

flavor:original,buildType:release。 APPINFO“发布”

flavor:black,buildType:debug。 APPINFO“DEBUG”

flavor:black,buildType:release。 APPINFO“发布”

对于给定的flavor和BuildTypes,我需要APPINFO的值:

flavor:original,buildType:debug。 APPINFO应该是“DEBUG_ORIGINAL”

flavor:original,buildType:release。 APPINFO应该是“RELEASE_ORIGINAL”

flavor:black,buildType:debug。 APPINFO应该是“DEBUG_BLACK”

flavor:black,buildType:release。 APPINFO应该是“RELEASE_BLACK”

我的Gradle文件如下:

 buildTypes {
    debug {
        buildConfigField "String", "APPINFO", "DEBUG"
        signingConfig signingConfigs.debug
    }
    release {
        buildConfigField "String", "APPINFO", "RELEASE"
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

提前致谢。

3 个答案:

答案 0 :(得分:0)

您可以使用返回布尔值的BuildConfig.DEBUG来检查构建是否为调试或发布,并检查构建风格,只需检查BuildConfig.FLAVOR

例如: 对于原始风味和调试构建集APPINFO为

if(BuildConfig.DEBUG && BuildConfig.FLAVOR.equalsIgnoreCase("original")) {
   APPINFO = "DEBUG_ORIGINAL"
} else {
   // other cases
}

答案 1 :(得分:0)

然后你也可以尝试下面的代码。这对你有用:

debug {
            productFlavors {
                original {
                    buildConfigField "String", "APPINFO", "DEBUG_ORIGINAL"
                }
                black {
                    buildConfigField "String", "APPINFO", "DEBUG_BLACK"
                }
            }
        }

release {
    //// similarly for release here
}

答案 2 :(得分:0)

尝试将以下代码替换为构建类型部分:

{{1}}