如何将Android模拟器重新连接到ADB?

40

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

我该如何重新连接模拟器到 ADB,以便能够从 Eclipse 进行调试?

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

编辑1
查看这张图片:

enter image description here

编辑2

在我杀死并重新启动服务器后,一个模拟器进程显示在 Eclipse 的设备选项卡中。但是它不能被展开,我也没有看到子进程。
我无法进行调试,因为它显示:Debug already running.(如何停止调试?)

如果我成功启动了另一个项目的调试,则它仍然停留在模拟器中,告诉我:Waiting for the debugger to attach. 什么都不会发生。

7个回答

92
正如你所说,问题不是Eclipse与模拟器失去联系,而是ADB - Android Debug Bridge - 与之失去联系。因为当ADB出现问题时,Eclipse使用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的设备视图中使用重置adb选项来执行此操作。

alt text

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

alt text

如果其他方法都无效,请尝试从操作系统中终止 adb 进程。在 Windows XP 上,我使用以下命令:

TASKKILL /F /IM adb.exe

我无法通过鼠标在Eclipse的Devices视图中使用Reset adb选项,因为所有内容都是灰色的。请检查我上面的编辑。 - Pentium10
@Pentium10 - 尝试从操作系统中终止adb进程,有时这会有所帮助。接下来尝试重新启动Eclipse,对我来说比重新启动模拟器要快。 - David Webb
最近在使用蜂窝网络更新后,即使执行了adb重启的所有步骤,仿真器似乎也不会出现。 - Tushar
两点说明:对于我来说,adb位于adt-bundle-.../sdk/partner-tools中,我必须同时执行adb kill-server和adb start-server。Eclipse没有为我启动它。 - Nick White

3

有一种更简单的方法。您可以从DDMS面板中重置adb。以下是如何操作的短视频:“Reset ADB on DDMS”

这里是一个快速截图,您可以在哪里得到此选项。enter image description here


我做了,但它没有将我的模拟器重新连接到ADB。 - Darpan

1
有时候在我的机器上(WinXP),kill-server并不能解决问题。例如,我无法在DDMS-View中看到模拟器,或者我可以看到它,但没有进程在运行。
在这些情况下,我会关闭模拟器和eclipse,并手动从进程列表中杀死adb.exe进程。
然后,当我重新启动eclipse和模拟器时,一切都恢复正常了。
现在我只需要一个键盘快捷方式来完成这个操作 :-)

1

1
在Mac上,我只需要从活动管理器中杀掉ADB,然后手动重新打开程序即可。Eclipse一直保持打开状态,一切都正常运行。

0

我的实用Bash脚本

#!/bin/bash
./path/to/adb kill-server
./path/to/adb start-server
./path/to/adb devices

0
我正在Android 4.0 (API level 14) 模拟器上测试一个应用程序。当我运行该应用程序时,模拟器启动并加载完毕后,Eclipse DDMS会与模拟器断开连接。
以下是解决方法:打开终端,导航到平台工具(C:\android-sdk\platform-tools\ 或您安装android-sdk的任何其他位置),然后运行adb kill-server命令,接着运行adb start-server命令。从Java角度来看,DDMS现在应该列出模拟器 - 右键单击应用程序 -> 运行为 -> Android应用程序。
希望这对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接