• 【转】解决:adb 提示adb server version(31) doesn't match this client(41) 解决办法


    原文:https://blog.csdn.net/gufenchen/article/details/91383397

    一、有时候我们用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:Userswuhuo>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,


    ————————————————
    版权声明:本文为CSDN博主「白清羽」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/gufenchen/article/details/91383397

  • 相关阅读:
    利用Jmeter模拟Github登录
    利用Python模拟GitHub登录
    Linux命令学习-ps命令
    Linux命令学习-tail命令
    Linux命令学习-history命令
    Linux命令学习-wget命令
    Linux命令学习-tar命令
    10.21工作第11天
    10.18工作第十天
    10.17工作第九天
  • 原文地址:https://www.cnblogs.com/tc310/p/12724637.html
Copyright © 2020-2023  润新知