解决:adb 提示adb server version(31) doesn't match this client(41) 解决办法
文章部分内容,来源与网络。
一、有时候我们用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 devices
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,
更多推荐
所有评论(0)