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

news/2024/5/20 1:02:31 标签: android, android studio, gradle

判断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 的?

androiddebuggable__21">使用 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包,它是由编译器自动生成并设置的。

androiddebuggable_46">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。


http://www.niftyadmin.cn/n/152144.html

相关文章

腾讯云云服务器标准型S5性能配置简单测评

腾讯云服务器标准型S5实例CPU采用Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;主频2.5GHz&#xff0c;睿频3.1GHz&#xff0c;标准型S5云服务器基于全新优化虚拟化平台&#xff0c;配有全新的Intel Advanced Vector Extension (AVX-512) 指令集&#…

JS面试题收集(持续更新好中...)

1.JavaScript 中的垃圾回收机制 定义&#xff1a;指一块被分配的内存既不能使用&#xff0c;又不能回收&#xff0c;直到浏览器进程结束。 JavaScript在创建对象时会为它们分配内存&#xff0c;不再使用时会自动释放内存&#xff0c;这个过程称为垃圾收集。 四种常见的内存泄…

Django中数据库保存save()源码分析

环境&#xff1a; win10 、python 3.6.5 django 1.11.8 背景&#xff1a; 1、数据库记录更新&#xff1b;2、数据库记录创建&#xff1b;3、创建一条已存在该主键的记录 1、3实现了数据库记录的更新&#xff1b;2实现了记录的创建&#xff1b; save实现的原理是什么&#xf…

Python|数组|动态规划|哈希表|双指针|字符串|单选记录:杨辉三角|电话号码的字母组合|验证回文串

目录 1、杨辉三角&#xff08;数组&#xff0c;动态规划&#xff09; 选项代码 2、电话号码的字母组合&#xff08;哈希表&#xff0c;字符串&#xff09; 选项代码 3、验证回文串&#xff08;双指针&#xff0c;字符串&#xff09; 选项代码 1、杨辉三角&#xff08;数组…

spring知识点汇总(一)

前言 汇总spring相关技术点 spring IOC理解、原理与实现 控制反转 原来对象是由使用者来进行控制,现在使用框架可以把整个框架交给spring来帮我们进行管理。 DI: 依赖注入,把对应的属性值注入到具体的对象中,@Autowired,populateBean完成属性值的注入 容器: 存储对象,使…

PMP考前冲刺3.15 | 2023新征程,一举拿证

题目1-2&#xff1a;1.某位团队执行主管正在检查一张图表&#xff0c;对他管理的四个敏捷团队在上一个迭代里的速率进行比较&#xff0c;你认为据此推断哪个团队生产力最高的方法可靠吗&#xff1f; A. 不可靠&#xff0c;速率本身并不是用以横向比较团队绩效的指标。B. 不可靠…

MySQL索引底层数据结构算法、优化以及锁与事务整理

目录 一、索引数据结构实现: 1.1、二叉树 1.2、红黑树 1.3、Hash表 1.4、B-Tree结构(BTree)

自定义SystemUI下拉状态栏和通知栏视图(二)

1.前言 在进行rom产品定制化开发中,在针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以根据产品需要来自定义SystemUI的下拉状态栏和通知栏功能,首选实现的就是下拉通知栏左滑删除通知的部分功能…