ADT何时将BuildConfig.DEBUG设置为false?

smi*_*324 107 eclipse android adt

在最新版本的ADT(r17)中,添加BuildConfig.DEBUG了根据构建类型设置的生成常量.我遇到的问题是它永远不会设置为false,我希望它在执行"Android工具 - >导出签名的应用程序包"时会改变,但它不适合我.

那么我该如何更改构建类型呢?

添加了一项功能,允许您仅在调试模式下运行某些代码.Builds现在生成一个名为BuildConfig的类,其中包含一个DEBUG常量,该常量根据您的构建类型自动设置.您可以检查代码中的(BuildConfig.DEBUG)常量以运行仅调试函数

smi*_*324 56

目前,您可以通过禁用"自动构建",清理项目然后通过"Android工具 - >导出签名的应用程序包"导出来获得正确的行为.运行应用程序时BuildConfig.DEBUG应该是false.

  • 在R22为我工作. (4认同)

Arn*_*Fun 36

使用Eclipse,我总是在发布中导出应用程序之前禁用"自动构建"选项.然后我清理项目并导出.否则它开始在调试模式下编译,然后BuildConfig.DEBUG的值可能是错误的.

使用Android Studio,我只需在build.gradle中添加自己的自定义变量:

buildTypes {
    debug {
        buildConfigField "Boolean", "DEBUG_MODE", "true"
    }
    release {
        buildConfigField "Boolean", "DEBUG_MODE", "false"
    }
}
Run Code Online (Sandbox Code Playgroud)

构建项目时,BuildConfig.java生成如下:

public final class BuildConfig {
  // Fields from build type: debug
  public static final Boolean DEBUG_MODE = true;
}
Run Code Online (Sandbox Code Playgroud)

然后在我的代码中我可以使用:

if (BuildConfig.DEBUG_MODE) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

我建议在切换调试/发布版本后清理.


Ran*_*ku' 33

它无法正常工作:

问题27940:对于导出的应用程序包,BuildConfig.DEBUG为"true"

令人失望的是他们有时会发布错误的功能.

  • 如果您希望修复此问题,请转到上述问题的链接并"加注". (9认同)

pbh*_*ick 11

它确实有效,但请注意,即使导出签名文件,代码文件也不会更改.导出过程会将此变量的值更改为false,这可能会给您一个错误的印象,即它不起作用.我用日志语句测试了这个

if (com.mypackage.BuildConfig.DEBUG)
            Log.d(TAG, location.getProvider() + " location changed");
Run Code Online (Sandbox Code Playgroud)

测试时,我的Log语句不再产生任何输出.

  • 我将BuildConfig.DEBUG的实例更改为com.mypackage.BuildConfig.DEBUG,然后重新运行该应用程序……它仍然始终返回true。也许我误解了你的建议。 (2认同)

Gen*_*ani 9

检查imports,有时BuildConfig是从任何类库中无意中导入的.例如:

import io.fabric.sdk.android.BuildConfig;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,BuildConfig.DEBUG将始终返回false ;

import com.yourpackagename.BuildConfig;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,BuildConfig.DEBUG将返回您的真实构建变体.

ps我只是从我的答案中复制这个:BuildConfig.DEBUG在使用gradle构建库项目时总是错误的


pet*_*ter 5

准备发布:

关闭日志记录和调试

在构建应用程序以进行发布之前,请确保停用日志记录并禁用调试选项.您可以通过删除源文件中对Log方法的调用来停用日志记录.您可以通过从清单文件中的标记中删除android:debuggable属性来禁用调试,或者通过在清单文件中将android:debuggable属性设置为false来禁用调试.此外,删除在项目中创建的任何日志文件或静态测试文件.

此外,您应该删除添加到代码中的所有Debug跟踪调用,例如startMethodTracing()和stopMethodTracing()方法调用.

更多信息请点击此链接.


e.s*_*kin 5

我的解决方案:

  1. 项目 - >自动构建
  2. 项目 - >清洁
  3. 项目 - >构建
  4. Project Export Android应用程序

这是在r20工作