【问题标题】:BuildConfig.DEBUG always return falseBuildConfig.DEBUG 总是返回 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);
    }
}

【问题讨论】:

标签: android android-log


【解决方案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 时,即适用于debugrelease

在调试模式下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,但这总是错误

            更改后,一切正常:

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-11-05
              • 2018-11-05
              • 2019-05-06
              • 2017-04-29
              • 2013-04-30
              • 2015-01-20
              • 2011-09-30
              相关资源
              最近更新 更多