https://www.cnblogs.com/zhujiabin/p/6874508.html
BuildConfig 的弊端
当 A Module 依赖 B Module ,且 B Module 中存在如下代码,A 调用这段代码时,BuildCofig.DEBUG 会始终为 false。其关系图如下所示:
public static void i(String tag, String msg) {
if (BuildConfig.DEBUG) {
Log.i(tag, msg);
}
}

因为被依赖的 Module B,默认会使用 Release 版本生成的 BuildConfig,所以这个值始终为 false。
解决该问题
既然默认使用 Release 版本生成 BuildConfig,通过指定使用其他版本生成 BuildConfig 即可,配置如下:
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
// debug 模式下,使用 debug 版本生成 BuildConfig
debugCompile project(path: ':library', configuration: 'debug')
}
这种方法的缺点是,每个依赖都需要配置,侵入性较强。
最终解决方法
我们的目的是判断当前是否 debug 版本,所以判断 AndroidManifest.xml 中 application 节点的 android:debuggable 属性值是否为 true 即可。代码实现如下所示:
public static boolean isApkInDebug(Context context) {
try {
ApplicationInfo info = context.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
return false;
}
}
总结
目标:判断是否 debug 版本
方法1:BuildConfig.java -> 不可行 -》 原因:默认使用 Release 版本生成 -》 解决方法:指定其他版本生成
方法2:根据 android:debuggable 的值进行判断