【问题标题】:Eclipse error "ADB server didn't ACK, failed to start daemon"Eclipse 错误“ADB 服务器未确认,无法启动守护程序”
【发布时间】:2011-08-07 21:28:33
【问题描述】:

更新 SDK 后,Eclipse 显示此错误:

ADB 服务器没有 ACK,启动守护进程失败。

当我运行 Android 应用程序时,它会为我提供以下信息:

请确保 adb 正确位于 'D:\android-sdk-windows\platform-tools\adb.exe' 并且可以执行。

我该如何解决这个问题?

【问题讨论】:

  • 刚刚安装了 genymotion,之后它开始发生,解决方案是手动从终端中删除 adb 命令,并在 ubantu 中的环境变量中设置 adb 路径,指向 sdk/platform-tools 然后它工作。

标签: android eclipse adb


【解决方案1】:

谢谢,@jowett,我已经解决了同样的问题,执行这些步骤

第 1 步: CTRL+Shift+Esc打开任务管理器,里面有adb.exe进程并结束(杀死)那个进程

第 2 步: 现在,关闭当前在我的计算机上运行的 eclipse。

第 3 步: 再次,重新启动 eclipse 然后解决了这个问题。


对于那些使用 OS X 的人

killall adb

对于那些使用 Windows 的人

adb kill-server

应该可以解决问题。

【讨论】:

  • Ubantu:每次我杀死服务器时,它都会在同一个端口上启动,并且错误仍然存​​在。模拟器永远不会启动。我使用 sudo lsof -i 进行了检查,每次杀死服务器时,adb 都会有一个新的 pid。 adb 永远不会启动(它自己启动),因此 start-server 变得不必要了。
【解决方案2】:

我遇到了同样的问题,虽然我不是什么原因造成的。无论如何,我找到了一些线索并最终修复了。

当我打开 SDK 和 AVD 管理器,但发现 AVD 版本(2.3.3)与 android lib 版本(2.3)不同。所以我用 2.3 创建了一个新的 AVD。

我通过以下步骤修复了它: 1、打开windows任务管理器,杀掉adb.exe进程。 2.关闭eclipse并重启。然后就可以了。

希望对你有帮助。

【讨论】:

    【解决方案3】:

    命令提示符(cmd.exe):

    netstat -aon | findstr 5037
    

    找到0.0.0.0的进程id:

    确保它是 adb.exe:

    tasklist | findstr 1980
    

    杀死这个进程:

    taskkill /f /t /im adb.exe
    

    让亚行恢复正常:

    来源:博文 *Android ADB server didn't ACK failed to start daemon*

    【讨论】:

    • 我这边是tfadb.exe,杀了之后就可以了,谢谢。
    • 就我而言,svchost.exe 正在使用该端口。杀了之后,启动成功了。
    【解决方案4】:

    如果您在使用 Android Studio 的同时使用 Genymotion 模拟器(在 Windows 或 Linux 上),则会出现这些症状:

    adb server is out of date.  killing...
    ADB server didn't ACK
    * failed to start daemon *
    

    Genymotion 包含自己的adb 副本,这会干扰Android SDK 中捆绑的副本。

    最简单的修复方法似乎是更新您的 Genymotion 设置,使其使用与您的 Android SDK 相同的 ADB:

    只需选中“使用自定义 Android SDK 工具”选项并输入您想要的位置。

    【讨论】:

    • 在将 Android Studio 更新到 2.1.2 后为我工作。
    【解决方案5】:

    如果adb_usb.ini 中有换行符,ADB 通常会失败。删除它,重新启动它,这通常会解决问题(至少对我而言)。

    【讨论】:

    • 在尝试使用 Kindle Fire 进行调试时,想在此文件 ~/.android/adb_usb.ini 中创建一个条目,但在不知不觉中添加了一些额外的空白行。现在将其删除。修好了,谢谢。
    【解决方案6】:

    如果您正在为设备使用同步应用程序,也可能是因为有其他应用程序使用相同的5037 端口。关闭端口5037上运行的所有服务并尝试启动ADB。

    要检查是否有任何应用程序正在使用端口 5037,请使用:

    netstat -a -n -o |findstr "5037"
    

    获取应用程序的 PID。

    使用Process Explorer找到进程并退出。

    现在使用adb start-serveradb get-state 启动/检查ADB 服务器状态。

    我在使用 Snappea / Wandoujia Sync 应用程序时遇到了这个问题。

    【讨论】:

    • 谢谢! svchost.exe 出于某种原因突然使用了该端口。
    • 不知道什么时候能修好,可惜还没修好。
    【解决方案7】:

    我在 ~/.android/adb_usb.ini 的末尾输入了一个额外的空行导致了这个问题

    (删除多余的空白行解决了问题)

    【讨论】:

    • 通过删除所有空行来解决类似的问题,而不仅仅是最后一个。
    • 我遇到了同样的问题,因为我在输入 Kindle Fire 行时在末尾添加了一个空行。我删除了空白行,然后 adb 重新启动没有问题。谢谢。
    【解决方案8】:

    我们可以很容易地解决这个问题。

    1. 打开命令提示符,然后执行cd <platform-tools directory>
    2. 运行命令adb kill-server
    3. 打开 Windows 任务管理器并检查 adb 是否仍在运行。如果是,就杀了adb.exe
    4. 在命令提示符下运行命令adb start-server

    【讨论】:

    • 无需重启Eclipse! :)
    【解决方案9】:

    我已经解决了我的第一个问题:打开Eclipse,打开SDK Manager,选择要打开的设备。

    或者您可以打开 SDK 目录。打开SDK Manager,然后选择要打开的设备

    2:关闭Eclipse,然后再打开。

    【讨论】:

      【解决方案10】:

      确保您手机上的 USB 调试已开启。 ADB kill-server 和 ADB start-server 不是问题。

      C:\Documents and Settings\Administrator> adb nodaemon server
      
       - cannot bind 'tcp:5037'
      
      C:\Documents and Settings\Administrator> netstat -aon | findstr "5037"
      
       - TCP 127.0.0.1:1130 127.0.0.1:5037 TIME_WAIT 0
       - TCP 127.0.0.1:1269 127.0.0.1:5037 TIME_WAIT 0
       - TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING 3088
       - TCP 127.0.0.1:5037 127.0.0.1:1128 TIME_WAIT 0
       - TCP 127.0.0.1:5037 127.0.0.1:1129 TIME_WAIT 0
       - TCP 127.0.0.1:5037 127.0.0.1:1270 TIME_WAIT 0
      
      C:\Documents and Settings\Administrator>tasklist -fi "pid eq 3088"
      
       - Image name PID session name session # memory usage
      

      ================================================ ======== =============

       - adb.exe 3088 Console 0 3,816 K
      
      C:\Documents and Settings\Administrator>taskkill /f /pid 3088
      
       - Success: terminate the PID for the process of 3,088.
      
      C:\Documents and Settings\Administrator>adb start-server
      
       - daemon not running. starting it now on port 5037 *
       - daemon started successfully *
      

      【讨论】:

        【解决方案11】:

        我已经对这个问题的另一个答案投了赞成票,但以防万一有人想知道,您无需重新启动 Eclipse 即可让 ADB 再次运行。只需打开一个 shell 并运行命令:

        adb start-server
        

        如果您没有在系统属性中设置 ADB 的路径,那么您必须首先进入 ADB 所在的目录(在 Android\android-sdk\platform-tools....我运行的是 Windows,我不知道mac人是怎么做的)。

        【讨论】:

        • 没关系。我也从命令行收到错误。
        • 我没有找到如何在 Mac 上执行此操作的方法。强制退出亚行没有帮助,所以我不得不重新启动整个计算机。然后它又工作了。
        【解决方案12】:

        如果您尚未安装 TCPVIEW 和 PROCESS EXPLORER,请访问 sysinternals.com。

        由于某种原因,ADB 守护程序在关闭套接字交换完成之前终止。如果您(从命令提示符)运行“NETSTAT -o”,您将看到处于 CLOSE_WAIT 状态的套接字(通常为 5037)和拥有的进程号。 Process Explorer 不会显示该进程 ID(守护程序已终止),并且名为 adb.exe 的进程(它打开了套接字)将消失。 (如果找到 adb.exe,请尝试终止任务并查看是否清理干净。)

        使用 TCPVIEW 定位挂起的套接字。进程名称栏会显示关联的进程找不到。右键单击,然后选择“关闭连接”。套接字现在已关闭,adb 守护进程应该能够启动。

        【讨论】:

        • 很有帮助。此外,在 Process Explorer 中,如果您看到 adb.exe 运行时的 Path 列显示 [Error opening process],这可能是罪魁祸首。
        【解决方案13】:

        我遇到了类似的问题。从任务管理器中终止 ADB 进程的现有实例对我来说工作。

        就在几天前,我曾尝试安装 MIPS SDK 和 ADT-17,但 Eclipse 给了我错误,我没有解决这个问题。

        所以,现在,当我得到这个 ADB 服务器没有 ACK,未能启动守护进程... 问题时,我在 Eclipse Help 中执行了“检查更新” em> 菜单项。 没有可用的更新,但至少“ADB 服务器没有确认”错误消失了。

        我希望这在某些情况下会有所帮助。

        【讨论】:

          【解决方案14】:

          在终端中输入./adb nodaemon server

          如果返回Invalid content in adb_usb.ini,则说明.android 文件夹中的adb_usb.ini 文件有问题。

          打开adb_usb.ini 并删除其内容。然后重新启动服务器...它对我有用。

          【讨论】:

            【解决方案15】:

            检查 Android 目录的路径。它不应包含空格等。

            同时检查插件是否已在 Eclipse 中正确配置 → Preferences

            在我的情况下,我多次检查了所有内容,但仍然无法正常工作。我正要重新安装所有东西,但我在这个网站上找到了答案(其他一些帖子)。

            请检查您的防病毒软件。它可能阻塞了adb.exe或模拟器程序等的端口。这解决了我的问题。

            【讨论】:

              【解决方案16】:

              除了@Bastet的解决方案:

              实际上我们必须使用地址0.0.0.0:0 杀死进程。这就是为什么大多数从任务管理器杀死adb.exe 的人都在工作的原因(在我的情况下,即使在任务管理器中我也看不到它)。

              按照 @Bastet 步骤,我发现有其他进程正在使用此地址。我继续杀了它,它给了我ACCESS DENIEDError

              所以我使用tasklist | findstr **** 找到了进程的名称并从任务管理器中将其杀死。

              此后它开始工作。

              在我的例子中,bas_daemonbas_helper 正在使用这个地址,这两个地址都对应于 MOBOROBO

              【讨论】:

                【解决方案17】:

                我遇到了同样的问题。但是我的笔记本电脑上没有adb的进程。我只是注销并登录到我的帐户,它已解决...

                之后,ADB 可以从 CMD 窗口启动。

                【讨论】:

                  【解决方案18】:

                  无需重新启动任何设备或软件的最佳和最有效的方法是:

                  运行以下命令:

                  adt-bundle-windows-x86_64\sdk\platform-tools\adb.exe
                  

                  还有一件事.. ADB 是一个自力更生的东西。除非它想要自己工作,否则你不能做任何事情。我发现了另一种方法:让设备连接 5-6 分钟,然后等待。很快设备就会连接并尝试启动。

                  【讨论】:

                    【解决方案19】:

                    直到我将Samsung Galaxy S III 手机植根(遵循 xda-developer 论坛指南),这才开始发生。

                    它是随机发生的,但肯定是在运行 Eclipse 时发生的。

                    杀死 adb.exe 进程并重新启动它可以解决问题。

                    【讨论】:

                      【解决方案20】:

                      查看防病毒软件或防火墙...是否会阻止您访问...在 k7 防病毒软件中,我关闭了系统监视器,它确实对我有用...

                      【讨论】:

                        【解决方案21】:

                        Linux/Ubuntu 用户也可能是这种情况....我有一个 android 模拟器正在运行,我不得不杀死它。为此,请执行以下操作

                        lsof -i :5307
                        

                        (如果需要,使用 sudo) 请注意上述命令结果中的 pid。那么

                        kill -9 <pid_from_above>
                        

                        然后继续

                        adb shell
                        

                        【讨论】:

                          【解决方案22】:

                          我必须允许 adb.exe 在我的防火墙中访问我的网络。

                          【讨论】:

                          【解决方案23】:

                          杀死 Eclipse 然后重新启动对我没有帮助。我将 Android 工具添加到 PATH 变量中,启动了任务管理器并杀死了 adb.exe。

                          我重新启动了 Eclipse,然后它就可以工作了。

                          【讨论】:

                            最近更新 更多