转- ADB server didn’t ACK 解决方法

 

Android ADB server didn’t ACK * failed to start daemon * 简单有效的解决方案

分类: Android 基础教程 36314人阅读 评论(40) 收藏 举报

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/9401981

ADB server didn’t ACK 这个问题会困恼很多的新手朋友,我以前刚开始做Android的时候也遇到过这个问题,不过自己百度,google啥的,也不知道怎么就给解决了,看到群里很多新手朋友都会问这个问题,说实话我也没有一个解决这个问题的终极方法(百试百灵的那种,哈哈),自己没遇到也没有认真的去对待他,今天,就是在今天,我打开Eclipse连上手机,准备调试程序,出现如下的信息

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

  1. The connection to adb is down, and a severe error has occured.
  2. You must restart adb and Eclipse.
  3. Please ensure that adb is correctly located at ‘D:\android-2.2-windows\platform-tools\adb.exe’ and can be executed.

然后我就按照他的要求来做,重启Eclipse和adb,然后确认adb的路径是否正确,然后当我再次运行程序的时候,依旧不行,之后我就开始百度了,有朋友说先在DOS下运行adb kill-server(你必须在环境变量中配好你adb的路径或者进入到adb.exe的目录下),然后在adb start-server,当我运行adb start-server的时候,DOS出现如下信息

[plain] view plaincopy在CODE上查看代码片派生到我的代码片

  1. * daemon not running. starting it now *
  2. ADB server didn’t ACK
  3. * failed to start daemon *

然后在运行程序还是不行,重复搞了很多次老不行,还有朋友说在任务管理器找到adb.exe,然后关闭,重启Eclipse,我打开任务管理器,发现根本没有找到adb.exe,这时候我流泪满面了,然后我冷静下来,知道有些朋友遇到这个错误是因为豌豆荚啥的软件占用了adb.exe的端口,我的电脑里面根本没有安装豌豆荚,然后我想看看是谁占用adb的端口,我从网上查到adb.exe使用的端口是5037,接下来我给大家介绍解决方法

  • 查看5037端口被谁占用了,开始–运行–CMD 到命令提示符,输入 netstat -aon|findstr “5037”,如下图                                                                          
  • 我们从上面根本就看不出5037端口被谁占用,我们需要根据后面的PID(2748)来查找占用该端口的应用程序,输入 tasklist|findstr “2748” ,如下图                                                                                                                                                                                                                                                                                                      注: 我这里5037端口是正确的被adb.exe占用,如果是你,就是其他的应用程序啦
  • 结束该进程,输入taskkill /f /t /im 你的进程名,例如adb.exe,如下图,在重新连接手机,这时候你会发现程序运行起来了                                    

这个问题虽然不是什么很大的问题,但是对于新手来说也是属于比较棘手的问题,所以我将自己解决此问题的方法在这里记录下,希望能给遇到此问题的人一点点帮助,如果我写得文章对你一点帮助请帮我顶一下文章,谢谢!

一直没搞明白这个问题咋出现的,但今天看到一个方法,搞定了!原来是豌豆荚占用了 5037 端口导致。

参见原文章:一个豌豆荚引发的血案——关于ADB server didn’t ACK的问题

简单来讲,首先将Windows任务进程中的豌豆荚干掉,如果还是不行,再继续按下列步骤排查。

问题现象:

[plain] view plaincopy

  1. C:\Users\John>adb shell
  2. adb server is out of date.  killing…
  3. ADB server didn’t ACK
  4. * failed to start daemon *
  5. error: unknown host service


1、排查哪路英雄占用了 5037 端口,找出他的 PID 来算账。 netstat -ano 命令会出现好多行,仔细找找。

  1. C:\Users\John>netstat -ano
  2. 活动连接
  3.   协议    本地地址              外部地址                状态           PID
  4.  TCP    127.0.0.1:5037         John-PC:0              LISTENING       5084


2、找到相关的 PID ,然后查看其名字,干掉即可。

[plain] view plaincopy

  1. C:\Users\John>tasklist /fi “pid eq 5084
  2. 映像名称                       PID 会话名              会话#       内存使用
  3. ========================= ======== ================ =========== ============
  4. wandoujia2.exe                5048 Console                    1    108,240 K


OK,干掉这个进程一般能搞定这个问题,感谢原文作者。