40

在我通过点击 Eclipse 中的调试启动模拟器后,一段时间后它与 ADB 断开连接,但模拟器保持打开状态。它是响应式的,我可以导航和启动应用程序。

如何将模拟器附加到 ADB,以便能够从 Eclipse 进行调试?

(当前的解决方法是终止模拟器,关闭 Eclipse 并重新启动它们,这需要 10 分钟,因为您知道模拟器需要时间来启动)

编辑 1
查看这张图片:

在此处输入图像描述

编辑 2

在我杀死并重新启动服务器之后。一个模拟器进程显示在 Eclipse 的设备选项卡中。但这无法扩展,我没有看到子流程。
我已经不能调试了,因为它说:调试已经在运行。(如何停止调试?)

如果我设法开始调试另一个项目,它会挂在模拟器中告诉我:等待调试器附加。没发生什么事。

4

7 回答 7

92

正如您所说,问题不是 Eclipse 与模拟器失去联系,而是 ADB(Android 调试桥)与它失去联系。由于 Eclipse 在 ADB 损坏时使用 ADB 与仿真器进行通信,因此 Eclipse 无能为力。

要解决此问题,请运行以下命令停止 ADB 服务器

adb kill-server

然后 Eclipse 通常会尝试重新启动 ADB,或者您可以通过运行 ADB 命令自行重新启动它,例如:

adb devices

如果这样做,您将看到如下输出:

* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
emulator-5554   device

您也可以通过鼠标使用Eclipse的Devices视图中的Reset adb选项来执行此操作。

替代文字

还值得注意的是,控制台视图有两种模式,DDMSAndroid. 您通常处于Console模式,但该DDMS模式将显示 ADB 状态消息。通过单击带有监视器图标的按钮或使用它旁边的箭头来选择模式:

替代文字

如果一切都失败了,请尝试从操作系统中终止 adb 进程。在 Windows XP 上,我使用:

TASKKILL /F /IM adb.exe
于 2010-02-10T11:06:26.233 回答
3

有一个更简单的方法。在 Eclipse 中,您可以从DDMS面板重置 adb。这是一个关于“在 DDMS 上重置 ADB”的简短视频

这是您可以在哪里获得该选项的快速屏幕截图。在此处输入图像描述

于 2013-10-13T17:25:33.397 回答
1

有时,kill-server 在我的机器上无济于事(WinXP)。例如,我在 DDMS-View 中再也看不到模拟器,或者我确实看到了它,但没有在其上运行任何进程。

在这些情况下,我关闭模拟器和 eclipse 并从进程列表中手动终止 adb.exe 进程。

当我然后重新启动 eclipse 和模拟器时,一切都很好了。

现在我只需要一个键盘快捷键:-)

于 2010-02-10T12:25:49.703 回答
1

在 Mac 上,我只需要从活动管理器中杀死 adb 并再次手动重新打开程序。一直打开eclipse,它工作得很好。

于 2012-05-22T06:07:07.783 回答
1

尝试使用 adb kill-server 和 adb start-server。即使那样,也会发生同样的问题,从 ddms 中杀死您正在运行的进程。参考这个链接(http://www.jiahaoliuliu.com/2011/02/stopping-android-applications-already.html)。这解决了我的问题。也希望你。

于 2013-08-23T05:13:05.540 回答
0

我正在 Android 4.0(API 级别 14)模拟器上测试一个应用程序,一旦我运行该应用程序,模拟器就会启动,一旦加载,Eclipse DDMS 就会与模拟器断开连接。

这是我正在使用的解决方法:打开终端,导航到平台工具(C:\android-sdk\platform-tools\ 或安装了 android-sdk 的任何位置),adb kill-server然后运行,然后运行adb start-server。DDMS 现在应该列出模拟器 - 从 Java 角度来看,右键单击应用程序 -> 运行方式 -> Android 应用程序。

希望这可以帮助。

于 2012-07-26T04:43:29.550 回答
0

我方便的 bash 脚本

#!/bin/bash
./path/to/adb kill-server
./path/to/adb start-server
./path/to/adb devices
于 2012-10-19T03:13:06.820 回答