Android BuildConfig.DEBUG始终返回false
为什么运行应用程序时,Android BuildConfig.DEBUG始终返回false,android,android-log,Android,Android Log,为什么运行应用程序时,BuildConfig.DEBUG返回false 我使用它来控制日志,如下所示: public static void d(String LOG_TAG, String msg){ if(BuildConfig.DEBUG){ Log.d(LOG_TAG,msg); } } 在您的Android Studio中构建变体您是否使用了调试变体 当您使用flavors进行debug或release时,将应用该选项 在调试模式下,BuildConf
BuildConfig.DEBUG
返回false
我使用它来控制日志,如下所示:
public static void d(String LOG_TAG, String msg){
if(BuildConfig.DEBUG){
Log.d(LOG_TAG,msg);
}
}
在您的Android Studio中构建变体您是否使用了调试变体 当您使用
flavors
进行debug
或release
时,将应用该选项
在调试模式下,
BuildConfig.BUILD
为true,而在发布模式下为false。如果该代码在库中,那么它将始终为false,这要归功于a。此问题有一个解决方法:
应用程序
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}
库
android {
publishNonDefault true
}
也许并不理想,但我最终创造了自己的
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\u DEBUG
那样对其进行编程处理。检查类中的导入,确保使用了正确的BuildConfig路径。您可能不是从应用程序中使用BuildConfig,而是从某个库中使用。可能您导入了错误的软件包,请检查。(一些Android库也有BuildConfig类)我在build.config中指定了可调试true
,但这始终是错误的
更改后,所有设备均正常工作:
确保类顶部的build config的自动导入语句属于您的项目
com.your.package.name.BuildConfig
BuildConfig
导入可能属于发布的库,DEBUG
为false。请勿导入BuildConfig
。这是一个自动生成的类,导入它是不必要的,不管Android Studio会告诉你什么
如果Android Studio提示您导入BuildConfig
,可能是因为您需要进行初始的Gradle构建来创建自动生成的类,该类最终将在com.yourdomain.yourapp.BuildConfig
上创建。这可能发生在升级Android Studio和Gradle时,或者运行Build->Clean项目时
如果您导入另一个包的BuildConfig
,那么它当然总是错误的,因为它们只发布它们的发布风格,而不是调试风格
关于建议修改build.gradle
的其他答案,我发现指定buildType
与Android Studio的默认行为及其生成的BuildConfig
相冲突,并声明我有一个重复的条目
因此,本质上:
- 不要导入任何包的
(所以让它保持红色)BuildConfig
- 不要将
添加到buildType
(这可能与自动生成类的默认生成行为冲突)build.gradle
- 忽略lint错误
- 运行构建
BuildConfig
——它将始终为false,因为它们没有发布调试版本
导入将导致您遇到的错误
在我的项目中,如果我导入其中一个建议的库,它将显示您得到的错误,因为没有人发布调试版本,所以如果您指向其他人的,那么它当然总是错误的
忽略intellisense并运行项目
只是运行一个构建。该类将自动生成,警告将消失
可能重复的“是”。您想要
导入com.myurl.mypackage.BuildConfig
,而不是compat或任何其他Android或库版本。我已经导入了Timber的BuildConfig。再见20分钟:)这个简单的单段答案被低估了。对于React Native,您需要格外小心,不要导入import com.facebook.React.BuildConfig代码>,请确保导入您自己的BuildConfig!否则,当你摇动你的设备时,你的开发菜单将永远不会出现。这对我来说是正确的答案,至少如果你有模块/库的问题。这不是一个解决方法,您覆盖了库的默认Android行为,因为您拥有这个库。应该使用flavors来管理发布时间和调试时间设置。这是一个手动设置。相反,请使用通常的方法,因为当您从DEBUG
模式切换到release
时,BuildConfig.DEBUG
的值会更改。但是谢谢,您已经给出了在BuildConfig级别创建常量的想法。为了使基于BuildConfig
的常量半动态,您应该使用flavors。但这超出了这个问题的范围。