android 中判断当前是否 debug 版本的方法

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 的值进行判断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值