如何在子模块中获取BuildConfig.DEBUG值

在Android开发中,我们使用android.util.Log来打印日志,方便我们的开发调试。但是这些代码不想在发布后执行,我们并不想在软件发布后调试日志被其他开发者看到,我们一般可以通过设定一个布尔类型达常量,来标记软件为Debug模式还是Release模式。
ADT 17版本以后,我们可以通过读取build/BuildConfig.java文件里DEBUG常量来判断。

if (BuildConfig.DEBUG) {
    android.util.Log.d(TAG,"something");
}

但是,如果子项目里也需要用到BuildConfig.DEBUG的值,并像如上的方式直接使用的话,会发现BuildConfig.DEBUG获取到的值一直为false。

出现这种现象的原因是,在子项目里虽然也有bulid文件夹,但是编译成最终apk的时候并未正确去正确编译子项目里的BuildConfig.java文件。

因此若要获取到正确的BuildConfig.DEBUG值,还必须通过反射的方式,获取到主项目里的BuildConfig.DEBUG值。

public static Object getBuildConfigValue(Context context, String fieldName) {
    try {
        Class<?> clazz = Class.forName(context.getPackageName() + ".BuildConfig");
        Field field = clazz.getField(fieldName);
        return field.get(null);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
    return null;
}

boolean debug = (Boolean) getBuildConfigValue(this, "DEBUG");

这样就可以获得到真正的BuildConfig.DEBUG。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值