为什么如果我想调试应用程序总是出现消息“监视器将关闭以启用 ADB 集成”?
2 回答
很晚了,但我把答案留作将来的参考。当我打开 DDMS 时,我在基于想法的 android studio 中遇到了同样的问题。我认为这个答案(https://stackoverflow.com/a/9258707/677096)回答了你的问题。
我只是要补充一点,该消息告诉您 Idea 将停止使用其内部用于调试 android 的集成,因此它将允许您使用 DDMS 调试代码。DDMS 是一个外部工具,因此为了使用它进行调试,您需要按照此处的说明配置您的 IDE:http: //developer.android.com/tools/debugging/debugging-projects-cmdline.html#start-debugging。
我还没有这样做,但我假设您需要按照此处的说明进行远程调试:
http://www.jetbrains.com/idea/webhelp/run-debug-configuration-remote.html
我使用的是 Android Studio,我的猜测是:Monitor(DDMS) 和 INTELIJ 发生冲突,因为它们都使用 adb(android debug bridge)。那是因为单个调试器可以附加到单个 VM(应用程序)。
DDMS 为设备上的每个 VM 分配一个调试端口。通常,DDMS 为第一个可调试 VM 分配端口 8600,下一个分配给 8601,依此类推。当调试器连接到这些端口之一时,所有流量都会从关联的 VM 转发到调试器。您只能将单个调试器附加到单个端口...
尽管您应该能够使用 DDMS 提供的端口转发在单个 VM(应用程序)上使用多个调试器:
您只能将单个调试器附加到单个端口,但 DDMS 可以处理多个附加的调试器。
默认情况下,DDMS 还会侦听另一个调试端口,即 DDMS“基本端口”(默认为 8700)。基本端口是一个端口转发器,它可以接受来自任何调试端口的 VM 流量并将其转发到端口 8700 上的调试器。这允许您将一个调试器附加到端口 8700,并调试设备上的所有 VM。转发的流量由 DDMS 设备视图中当前选择的进程确定。
您可以通过简单的调试器即 jdb(java 调试器)通过以下方式连接到 DDMS 来确保这是可能的:
jdb -附加本地主机:8700
(如果 DDMS 在 8700 端口上转发)
这就是我所知道的。
我不能发布超过 2 个链接,但引用来自官方 android 开发者网站,标题为:
使用 DDMS
一些链接: