Android的开发中debug和release版所需的功能是不同的,例如debug版本需要打印日志,打开LeakCanary等,而这些功能在release版本中是不能加入的,如果在代码层面对这些功能加些开关的话,打包的时候往往会有人忘记关闭这个开关,此时就得需要开发人员关闭开关后再重新打包,非常的麻烦。BuildConfig.DEBUG就很好的解决了这个问题,BuildConfig.DEBUG在debug版中永远是true,在release版本中永远是false,开发者可以用这个值来当作开关,在debug和release加入不同的功能,例如:
public static String HOST = "";
if (BuildConfig.DEBUG) {
HOST = "192.168.1.10";
} else {
HOST = "www.mydomain.com";
}
上述代码表示debug版本和release版本在域名中是不同的
但是我最近的一次编译中BuildConfig.DEBUG的值永远是false
编译模式也选择的是Debug模式
最后还是在一朋友的帮助下找到了原因,原因是我在引入BuildConfig类时我引入的是第一个提示的类(这也是我的习惯不好吧,总喜欢引入第一个提示的包),请看下图(错误的引入):
其实应该引入自己工程的包,切换引入的包后,再在debug模式下编译,BuildConfig.DEBUG就变为true了