如何在Android debug VS release vs main中覆盖变量?

时间:2015-04-02 18:37:12

标签: java android

当我在调试模式下时,我有一个我想用src / debug / java版本覆盖的变量:

public static final boolean DEBUG = true;

我尝试将src / debug / java中的变量设置为true,将src / main / java设置为false,但不会覆盖它。有没有办法做到这一点或解决方法?

我在build.gradle中尝试了以下内容,但无论是发布模式还是调试模式,它都是

    debug {
        buildConfigField "boolean", "REPORT_CRASHES", "false"
    }

    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "boolean", "REPORT_CRASHES", "true"
    }

我的java:

    Log.d(TAG, "BuildConfig.REPORT_CRASHES: " + BuildConfig.REPORT_CRASHES);
    // Both debug and release versions display 'true'

2 个答案:

答案 0 :(得分:1)

根据this blog上的示例,您可以在gradle文件中使用buildConfigFieldBuildConfig类添加其他变量:

defaultConfig {
    ....
    buildConfigField "boolean", "DEBUG_FLAG", "false"
}

buildTypes {
    debug {
        buildConfigField "boolean", "DEBUG_FLAG", "true"
    }
    ...
}  

然后使用BuildConfig.DEBUG_FLAG在代码中引用它。请注意,BuildConfig已包含DEBUG标记,除true版本外,其他所有标记均为release

答案 1 :(得分:0)

你应该使用你的com.main.module.BuildConfig VS你的com.dependency.module.BuildConfig ...这将解决所有问题。