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错误
  • 运行构建
错误应该消失

当我升级Android Studio和Gradle以及清理项目时,我就体验到了这一点

忽略导入提示

不要导入另一个包的
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。但这超出了这个问题的范围。