Android:ADB server didn't ACK或者adb server is out of date. killing解决办法

出现这个原因我个人感觉有两个。一、5037端口被别的程序或者进程占用;二、adb占用的不是5037端口。很多人仅仅知道第一种二忽视了第二种。

不管哪个原因,解决问题的办法都一样。这里做一个整理如下:

1. 错误信息:

C:\Users\lizy>adb devices

adb devicesadb server is out of date.  killing...

ADB server didn't ACK* failed to start daemon *error: unknown host service


2. 原因:

adb的端口(5037)被占用了。至于这个5037端口,可以参考本博客另外 一篇文章:

http://blog.csdn.net/liranke/article/details/4999210

在这个文章里,详细说明了adb的原理及其源码分析


3. 解决方法:

在cmd窗口:
C:\Users\lizy> adb nodaemon server
cannot bind 'tcp: 5037'


C:\Users\lizy> netstat -ano | findstr "5037"
  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       8516
  TCP    127.0.0.1:5037         127.0.0.1:59163        TIME_WAIT       0
  TCP    127.0.0.1:5037         127.0.0.1:59164        TIME_WAIT       0
  TCP    127.0.0.1:5037         127.0.0.1:59167        TIME_WAIT       0
  ......
C:\Users\lizy> tasklist | findstr "8516"
sjk_daemon
                       8516 Console                    1     3,071 K

哦,原来是sjk_daemon进程占了adb的端口。

C:\Users\lizy> tasklist




Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0         24 K
System                           4 Services                   0      1,128 K
sjk_daemon                     963 Console                    1      3,071 K
tasklist.exe                  1260 Console                    1      5,856 K


将这个进程kill掉:
C:\Users\lizy> taskkill /f /pid 963

如果这个命令提示无权限,那么,可以去 windows的“任务管理器”中“进程”那个窗口,找到这个进程,将它杀掉。


再运行adb devices,就没有问题了。
C:\Users\lizy>adb devices
4df7f482396a301d        device


最后别忘了重启eclipse和模拟器。

你可能感兴趣的:(server,server,adb,adb,out,ack,of,is,didnt,开发常见错误,android错误解决办法)