adb server is out of date. killing完美解决

时间:2022-04-16 08:01:08

  原本是想跑monkey测试的,可使用adb命令时提示:adb server is out of date. killing...

  出现这个问题的原因是:adb使用的端口5037被占用了。下面我们说下如何找到是哪个程序占用了这个端口,顺便看看cmd里面的一些类似Linux的进程操作。

 

 1.错误信息:

C:\Users\admin>adb shell monkey -help
adb 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. 解决办法:

(1)查看adb的端口号是多少: adb nodaemon server

C:\Users\admin>adb nodaemon server
cannot bind 'tcp:5037'

提示:无法绑定5037端口

(2)查找5037端口占用的进程 :netstat -ano | findstr "5037"

C:\Users\admin>netstat -ano | findstr "5037"
TCP 127.0.0.1:5037 0.0.0.0:0 LISTENING
TCP 127.0.0.1:5037 127.0.0.1:53437 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:53440 TIME_WAIT 0
TCP 127.0.0.1:5037 127.0.0.1:53445 TIME_WAIT 0

(3)找到占用端口进程对应的应用程序 :tasklist | findstr "10760"

C:\Users\admin>tasklist | findstr "10760"
PPAdbServer.exe 10760 Console 1 6,044 K

(4)此时有2个方法杀死进程:

  方法1,通过任务管理器,进程中找到PPAdbServer.exe ,结束进程即可。此方法省事高效。

  如果想多学习CMD命令,可以用下面方法

  方法2:taskkill /f /pid 10760

  C:\Users\admin>taskkill /f /pid 10760

  成功: 已终止 PID 为 10760 的进程。

4. 重现启动adb

C:\Users\admin>adb shell monkey -help
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]

参考文档:https://blog.csdn.net/liranke/article/details/42524851