ADT(R17)会自动生成一个名称为BuildConfig的类,该类包含一个DEBUG 常量,该常量会根据当前项目的Build类型自动设置值。
可以通过(BuildConfig.DEBUG) 常量来编写只在Debug模式下运行的代码。
如果有些代码不想在发布后执行,就可以使用该功能。

Added a feature that allows you to run some code only in debug mode.
Builds now generate a class called BuildConfig containing a DEBUGconstant that is automatically set according to your build type. You can check the (BuildConfig.DEBUG) constant in your code to run debug-only functions.

比如调试日志,不想在软件发布后被其他开发者看到,过去的方式是设置一个全局变量,标记软件为DEBUG模式还是其他模式。

1
2
3
4
5
public static boolean DEBUG = true;
//...
if(DEBUG==true){
Log.d(TAG,"output something");
}

这样打包发布之前还要修改DEBUG变量的值,有时候不记得或者变量到处都有,重新修改、编译、发布,费时费力。

有了BuildConfig.DEBUG之后,代码变成了

1
2
3
if (BuildConfig.DEBUG) {
Log.d(TAG, "output something");
}

在编码期,编译发布前,BuildConfig.DEBUG的值自动为true
需要打包时,先禁用 “Build Automatically”, “Clean”工程目录,再通过 “Android Tools -> Export Signed Application Package“ 编译打包,BuildConfig.DEBUG的值会被改为false。
开发者自己不用修改其他东西了。

流程如下[1]

  1. Project -> Build Automatically
  2. Project -> Clean
  3. Project -> Build
  4. Android Tools -> Export Android application

从此,Logcat清爽了许多。

[1]-When does ADT set BuildConfig.DEBUG to false?