BuildConfig.DEBUG 总是返回 false
Posted
技术标签:
【中文标题】BuildConfig.DEBUG 总是返回 false【英文标题】:BuildConfig.DEBUG always return false 【发布时间】:2016-07-20 22:36:01 【问题描述】:为什么BuildConfig.DEBUG
在我运行应用程序时返回 false?
我用它来控制日志,如下所示:
public static void d(String LOG_TAG, String msg)
if(BuildConfig.DEBUG)
Log.d(LOG_TAG,msg);
【问题讨论】:
BuildConfig.DEBUG always false when building library projects with gradle的可能重复 【参考方案1】:检查类中的导入,确保使用正确的 BuildConfig 路径。您可以使用 BuildConfig 不是来自您的应用程序,而是来自某个库。
【讨论】:
是的。您需要import com.myurl.mypackage.BuildConfig
,而不是兼容或任何其他 android 或库版本。
我已经导入了 Timber 的 BuildConfig。再见 20 分钟 :)
这个简单的单段答案被低估了。
对于 React Native 你需要格外小心不要导入 import com.facebook.react.BuildConfig;
,确保导入你自己的 BuildConfig!否则,当您摇动设备时,您的开发菜单将永远不会出现【参考方案2】:
在您的 Android Studio 构建变体中,您是否使用 debug 变体?
当您使用flavors
时,即适用于debug
或release
。
在调试模式下BuildConfig.BUILD
为真,在发布模式下为假。
【讨论】:
【参考方案3】:确保类顶部的构建配置的自动导入语句属于您的项目。
com.your.package.name.BuildConfig
BuildConfig
导入可能属于已发布的库,DEBUG
为 false。
【讨论】:
【参考方案4】:如果该代码在库中,那么它总是错误的,这要感谢3-year-old bug in gradle。
【讨论】:
【参考方案5】:不要导入BuildConfig
。这是一个自动生成的类,不需要导入它,尽管 Android Studio 可能会告诉您。
如果 Android Studio 提示您导入 BuildConfig
,可能是因为您需要进行初始 Gradle 构建以创建自动生成的类,该类最终在 com.yourdomain.yourapp.BuildConfig
创建。当您升级 Android Studio 和 Gradle 或运行 Build -> Clean project 时,可能会发生这种情况。
如果你导入另一个包的BuildConfig
,那么当然它总是错误的,因为他们只是发布他们的发布风格而不是他们的调试风格。
关于建议修改build.gradle
的其他答案,我发现指定buildType
与Android Studio 的默认行为及其生成BuildConfig
相冲突,说明我有重复条目。
所以本质上:
不要导入任何包的BuildConfig
(所以让它保持红色)
不要将buildType
添加到您的build.gradle
(这可能与自动生成类的默认构建行为冲突)
忽略 lint 错误
运行构建
错误应该消失。
我在升级 Android Studio 和 Gradle 以及清理项目时遇到这种情况。
忽略导入提示
不要导入另一个包的BuildConfig
——它总是错误的,因为他们没有发布他们的调试版本。
导入会导致您遇到的错误
在我的项目中,如果我导入建议的库之一,它会显示您遇到的错误,因为没有人发布调试版本,所以如果您指向某人,它当然总是错误的别人的。
忽略智能感知并运行项目
只需运行构建。该类将自动生成,警告将消失。
【讨论】:
【参考方案6】:有解决该问题的方法:
应用
dependencies
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
图书馆
android
publishNonDefault true
【讨论】:
这对我来说是正确的答案,至少如果您对模块/库有这个问题。这不是一种解决方法,您会覆盖库的默认 Android 行为,因为您拥有此库。 应该使用风味来管理发布时间和调试时间设置。【参考方案7】:也许不理想,但我最终创建了自己的
buildTypes
debug
buildConfigField "boolean", "IS_DEBUG", "true" // Had issues with BuildConfig.DEBUG, created IS_DEBUG to ensure functionality behaved as expected.
release
signingConfig signingConfigs.release
buildConfigField "boolean", "IS_DEBUG", "false"
然后以编程方式像BuildConfig.IS_DEBUG
一样处理它。
【讨论】:
这是手动设置。相反,请使用通常的模式,因为当您从debug
模式切换到release
时,BuildConfig.DEBUG
的值会发生变化。但是谢谢,您已经提出了在 BuildConfig 级别创建常量的想法。
为了使基于BuildConfig
的常量半动态,您应该使用风味。但这超出了这个问题的范围。【参考方案8】:
也许你导入了错误的包,检查一下。 (一些 Android 库也有 BuildConfig 类)
【讨论】:
【参考方案9】:我在 build.config 中指定了 debuggable true
,但这总是错误
更改后,一切正常:
【讨论】:
以上是关于BuildConfig.DEBUG 总是返回 false的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio 中有没有类似C#的#if DEBUG功能
错误记录Android Gradle 配置报错 ( gradle.properties 配置到 BuildConfig 中需要注意类型转换 | 位置: 类 BuildConfig )