adb server version(31) doesnt match this client(41)

adb server version(31) doesnt match this client(41)


参考

解决:adb 提示adb server version(31) doesnt match this client(41) 解决办法_移动开发_白清羽的博客-CSDN博客


正文

一、有时候我们用 adb 工具去连接安卓设备,或者模拟器的时候,会提示 adb server version(31) doesn’t match this client(40)这样的提示。如图在这里插入图片描述
提示的字面意思就是当前 client 版本 40,与 server 端的版本不匹配,当前版本过高引起的。注意,这里的 client 就是你电脑已经安装的 adb 程序的版本,而 server,也就是你的服务端,将要 connect 的设备。网上说出现这种不匹配只要下载对应的 adb 版本重新替换你之前安装的 adb 就行了,对应的 android studio 路径就是你的 android sdk 目录的 platform-tools 文件夹里面的 adb.exe 程序。
在这里插入图片描述
然而事实上却并非就解决问题。这是因为你的电脑安装了,鲁大师手机助手,360 手机助手占用了 adb 的端口引起的。因为套接字的唯一性(一个套接字只能由 协议 / 网络地址 / 端口号 唯一确定 ),一个电脑只能有一个程序关联对应的端口,对于 adb 对应的端口就是 5037。为了验证你的 5037 端口是否被占用,可以用 netstat -ano|findstr “5037” 去查找 5037 对应的端口号的进程 id 也就是 pid。
如果有相应的 pid,就证明此端口 5037 有程序占用了。如下图
在这里插入图片描述
果然,5037 端口有相应的进程,我们试着去查找相应的进程对应的进程名称,用 tasklist |findstr “15828”结果如下图
在这里插入图片描述
果然,我们找到了一个进程名字,看名字似乎是 ludash 的拼音缩写开头的,这时候去检查一下你电脑的运行程序,哎呦,还真有一个鲁大师手机助手正在运行,就是它害的我们的 adb 运行不了,所以我们果断打开进程管理器结束这个进程,如下图。
在这里插入图片描述
单击结束进程把它结束了,然后再运行 adb connect server IP 成功运行。
我的是 mibileLoader 不能被禁用, 删除了还会恢复, 一直占用 5037 端口, 导致手机和电脑无法连接.
通过 adb 调试手机都没办法进行了, 卸载 360 了.
二、如果上面的还是不能解决:
每当我尝试运行时adb devices

$ adb devices
            * daemon *not* running. starting it now *
            * daemon started successfully *
            List *of* devices attached
            HT0ANRV05740    device

它说守护进程没有运行并重新启动守护进程。
然后,如果我再次运行 adb 设备,它会做同样的事情 -

$ adb devices
            adb server *is* out *of* date.  killing…
            * daemon started successfully *
            List *of* devices attached
            HT0ANRV05740    device

然后,如果我再次运行它,它再次做同样的事情 -

            adb server *is* out *of* date.  killing…
            * daemon started successfully *
            List *of* devices attached
            HT0ANRV05740    device

从网上查到,需要在命令行运行以下 shell 命令获取 deviceName
adb devices -l
然而输入回车后,出现以下错误

`C:\Users\wuhuo>adb devices -l
adb server is out of date.  killing…
ADB server didn’t ACK
* failed to start daemon *
error:

朋友叫我输入adb start-server,结果是这样婶儿的

adb server is out of date.  killing…
ADB server didn’t ACK

* failed to start daemon *

网上查了是因为端口有冲突,有其他进程占用了 5037 这个端口。(可以用 adb nodaemon server这个命令查看端口)

解决方法:
用以下命令查看 5037 端口号的应用
netstat -ano | find “5037”
从左至右依次是连接类型、本地地址:端口、外部地址:端口、连接状态、进程的 PID
个人理解,应该杀掉的是本地端口为 5037 的那个进程。(20170319 注:看过多个别人杀进程的帖子,证实想法正确)
看最后一列获得进程的 PID,常规方法是使用以下命令杀掉它:
taskkill /pid xxx
但对于我的情况来说,杀完再 find,它又出现了,喵喵喵?而且再细看一下,这些进程全部都是 genymotion 目录中 tools 文件夹下的 adb.exe,按我的理解不该杀啊。
(20170320 注:实际上很多软件都包括 adb.exe,像豌豆荚及各种手机助手。如果它们启动了,也会占用这个端口。信息来自网上找到 appium 视频教程)
因为已经深夜了,第二天继续研究。今日查到 stackoverflow 上一个帖子:
http://stackoverflow.com/questions/5092542/adb-server-is-out-of-date
答主真是一针见血。。把 genymotion 的 adb 设置为自己的 adb 之后,问题解决了。
Genymotion 默认用的是第一个选项,现改为 custom,然后选择自己的 sdk 文件夹在这里插入图片描述
选择 Setting,
找到 ADB, 点击在这里插入图片描述
在这里插入图片描述
选择第二个:Customer Android SDK tools:, 选择 SDK 的文件夹,
在这里插入图片描述
再输入 adb devices -l在这里插入图片描述

发布了317 篇原创文章 · 获赞 28 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_31433709/article/details/105705910
今日推荐