buildType总是发布,即使我选择调试

时间:2016-02-09 20:11:27

标签: android gradle

我想通过以下方式区分release和debug buildType:

 buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.release
        buildConfigField "boolean", "REPORT_CRASHES", "true"
        resValue "boolean", "REPORT_CRASHES", "false"


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

我想以编程方式访问这些:

if("true".equals(getResources().getString(R.string.REPORT_CRASHES))|| BuildConfig.REPORT_CRASHES)
    LoggingUtils.setupAirbrake(this);

我甚至试图这样做:

          if(BuildConfig.BUILD_TYPE.equals("debug")){}

问题:

即使我单击调试按钮并选择debug作为构建变体,BUILD_TYPE也总是告诉“release”。是否有任何配置覆盖调试按钮和调试版本变体以使其成为“发布”

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

根据Gradle文档:

  

图书馆出版:      默认情况下,库仅发布其版本变体。所有引用库的项目都将使用此变体,无论它们自己构建哪种变体。由于Gradle限制我们正在努力删除,这是一个临时限制。您可以控制发布哪个变体:

android {
    defaultPublishConfig "debug"
}

因此,如果您有本地lib并且想要调试它,则应添加此参数。

答案 1 :(得分:0)

您的build.gradle并未始终如一地定义REPORT_CRASHES资源的类型。在一个地方,它是一个布尔值,另一个地方是一个字符串。那肯定会给你带来麻烦。

如果你只想知道它是否是一个调试版本,你应该可以使用BuildConfig.BUILD_TYPEBuildConfig.DEBUG而不需要任何额外的gradle配置。如果这些价值不符合您的预期,那么您就不会构建您认为自己正在构建的内容(我没有遇到过问题)。