判断Android 应用是否处于Debug模式的2种方法

判断Android 应用是否处于Debug模式的2种方法


我们有时想在代码中,判断应用是否是调试版本,以此来屏蔽或者做一些特殊处理,例如,1. 打印日志;2. 如果是 Debug 模式下的崩溃信息,我们要特殊标记出来等。

那么如何判断 Debug 模式呢?

使用 BuildConfig.DEBUG 判断

最简单的方式:

BuildConfig.DEBUG

使用 BuildConfig.DEBUG 可以很方便的判断,当前是 Debug 包还是 Release 包,以此来进行逻辑处理。

但是,当我们的项目是一个 SDK 时,这个方法就不可以了,我们发版的 SDK 中的 BuildConfig.DEBUG 都是 Release 包,BuildConfig.DEBUG 一直都是 false。

那么如何来判断 SDK 所在的包,是否是 Debug 的?

使用 android:debuggable 判断

我们可以使用 android:debuggable 来判断应用是否处于可调试状态,它对应的标志位是 ApplicationInfo.FLAG_DEBUGGABLE:

if (0 != (getContext().getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)){
            //Debug 模式是打开状态
        }

它可以在 build.gradle 中进行设置:

debug {
            debuggable true
        }

二者区别

BuildConfig.DEBUG

BuildConfig.DEBUG 表示当前编译的 APP 是否是 Debug包,它是由编译器自动生成并设置的。

android:debuggable

android:debuggable 表示是否可以调试应用(即使在处于用户模式的设备上运行时)。如果可以调试,则设为 “true”,否则设为 “false”。默认值为 “false”。

android:debuggable 标签,最终会被设置在 AndroidManifest 中的 application 标签中:

<application android:debuggable=["true" | "false"]
. . .

它代表了 APP 的可调式状态。

两者的联系

BuildConfig.DEBUG 和 android:debuggable 有一定的关联:如果设置 android:debuggable 为 false,则不管 APP 是否是 Debug 包,BuildConfig.DEBUG 将一直是 false。

设置:

debug {
            debuggable true
        }

之后,BuildConfig.DEBUG 的值一直都是 false。

猜你喜欢

转载自blog.csdn.net/u011578734/article/details/129560703