我想通过以下方式区分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”。是否有任何配置覆盖调试按钮和调试版本变体以使其成为“发布”
有什么想法吗?
答案 0 :(得分:4)
根据Gradle文档:
图书馆出版: 默认情况下,库仅发布其版本变体。所有引用库的项目都将使用此变体,无论它们自己构建哪种变体。由于Gradle限制我们正在努力删除,这是一个临时限制。您可以控制发布哪个变体:
android {
defaultPublishConfig "debug"
}
因此,如果您有本地lib并且想要调试它,则应添加此参数。
答案 1 :(得分:0)
您的build.gradle并未始终如一地定义REPORT_CRASHES
资源的类型。在一个地方,它是一个布尔值,另一个地方是一个字符串。那肯定会给你带来麻烦。
如果你只想知道它是否是一个调试版本,你应该可以使用BuildConfig.BUILD_TYPE
或BuildConfig.DEBUG
而不需要任何额外的gradle配置。如果这些价值不符合您的预期,那么您就不会构建您认为自己正在构建的内容(我没有遇到过问题)。