我正在寻找一种方法来判断我的应用是在调试器下运行还是在Android Studio下“正常”运行。
这两种情况是
1.单击“运行应用程序”按钮(绿色箭头)运行该应用程序
2.单击“调试应用程序”按钮(齿轮图标)来运行该应用程序
我想在调试时输出更多详细的诊断信息(使用Log。*)。
我尝试检查BuildConfig.DEBUG,但这两种情况均为TRUE。我怀疑这是因为在这两种情况下,Android Studio均使用 Debug Certificate 签署了该应用程序。
有人知道如何在运行时区分这两种情况吗?
答案 0 :(得分:2)
通常会检查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()的方法,当按下false
按钮时,无论构建配置如何,该方法总是返回run
。 / p>
答案 1 :(得分:0)