我正在寻找一种方法来判断我的应用程序是在调试器下运行还是在 Android Studio 下“正常”运行。
这两个案例是
1. 单击“运行应用程序”按钮(绿色箭头)运行应用程序
2. 单击“调试应用程序”按钮(齿轮图标)运行应用程序
我想在调试时输出更详细的诊断信息(使用 Log.*)。
我尝试检查 BuildConfig.DEBUG 但无论哪种情况都是如此。我怀疑这是因为 Android Studio 在这两种情况下都使用调试证书对应用程序进行签名。
有人知道如何在运行时区分这两种情况吗?
最佳答案
通常,人们会检查 BuildConfig.DEBUG
(或保存它的 boolean
变量),然后记录:
if(BuildConfig.DEBUG) {Log.d("SomeActivity", "debug message");}
参见 documentation ...与调试最相关的是 build-config debuggable
true/false
。
run
按钮不会启动调试器;无论构建配置如何(它只是跳过所有断点)。
在多模块项目中,应该检查:
(getContext().getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0
为了区分它们,需要配置两种构建类型:
android {
...
buildTypes {
debug {
...
renderscriptDebuggable true
jniDebuggable true
debuggable true
}
release {
...
renderscriptDebuggable false
jniDebuggable false
debuggable false
}
}
}
为了准确回答这个问题,甚至有一种方法称为 isDebuggerConnected() ,当点击run
按钮时,它总是返回false
(无论构建配置如何)。
关于android - 如何以编程方式判断我的应用程序是否正在调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560750/