dsd*_*dsd 6 debugging android android-studio build.gradle
我想确切地知道该debuggable true
语句的作用:
// build.gradle
android
{
buildTypes
{
debug
{ debuggable true
}
}
}
Run Code Online (Sandbox Code Playgroud)
我是能不使用仿真器(genymotion)进行调试:断点工作; Log.d(...)
输出到 Android Monitor的语句;
由于debuggable
标志位于该debug
部分内,因此无论如何似乎都是多余的。它不应该在该buildTypes
部分之外,向ide指示debug
应该使用构建类型吗?
对debug
和release
构建类型 之间的区别进行一些简单的外行一般背景理解也会很好。
在 Android 上,调试器使用JDWP与虚拟机通信。启用调试后,VM 会创建一个专用线程来侦听 JDWP 流量并响应请求。(也可以使用本机调试器,例如 gdb,但那是另一种鱼。)
在出售给消费者的设备上,通常不需要运行额外的线程,因此默认情况下应用程序不可调试。此外,恶意软件可能会使用调试器界面来检查或操纵正在运行的应用程序,因此禁用它是最安全的。另一方面,在模拟器上运行的任何东西都应该是可调试的,所以那里的默认行为是不同的。该ro.debuggable
系统属性确定该(adb shell getprop ro.debuggable
)。
debuggable
应用清单中的标志告诉 VM 应用正在开发中,无论应用是否在生产设备上运行,都应该允许来自调试器的连接。
以上所有内容都与应用程序的运行时行为有关,而不是构建。调试版本也不同于发布版本。将-g
标志传递给javac
会导致输出附加信息,并且有一些dx
选项可以去除或保留.dex
文件中的附加调试信息。(我不知道 gradle 标志如何与这些交互。)
归档时间: |
|
查看次数: |
5779 次 |
最近记录: |