gpt4 book ai didi

安卓工作室 : What does 'debuggable' do?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:43 25 4
gpt4 key购买 nike

我想知道 debuggable true 语句的确切作用:

// build.gradle
android
{
buildTypes
{
debug
{ debuggable true
}
}
}

能够使用模拟器 (genymotion) 进行调试:断点有效; Log.d(...) 语句输出到 Android Monitor;

因为 debuggable 标志位于inside debug 部分,所以它似乎是多余的。它不应该在 buildTypes 部分之外,向 ide 指示应该使用 debug 构建类型吗?


对于 debugrelease 构建类型之间的区别,让一些简单的外行了解一般背景知识也很好。

最佳答案

在 Android 上,调试器使用 JDWP 与虚拟机通信.启用调试后,VM 会创建一个专用线程来监听 JDWP 流量并响应请求。 (也可以使用 native 调试器,例如 gdb,但那是另一回事。)

在出售给消费者的设备上,通常不需要运行额外的线程,因此默认情况下应用不可调试。此外,恶意软件可能会使用调试器界面来检查或操纵正在运行的应用程序,因此禁用它是最安全的。另一方面,在模拟器上运行的任何东西都应该是可调试的,所以那里的默认行为是不同的。 ro.debuggable 系统属性决定了这一点(adb shell getprop ro.debuggable)。

应用 list 中的 debuggable 标志告诉 VM 该应用正在开发中,并且无论该应用是否在生产设备上运行,都应允许来自调试器的连接。

以上所有内容都与应用程序的运行时行为有关,与构建无关。调试版本也不同于发布版本。将 -g 标志传递给 javac 会导致输出额外的信息,并且有 dx 选项可以去除或保留额外的调试信息.dex 文件。 (我不知道 gradle 标志如何与这些交互。)

关于安卓工作室 : What does 'debuggable' do?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37143960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com