adb server version (31) doesn‘t match this client adb server version (41) doesn‘t match this client

本文针对ADB版本不一致导致的问题提供了解决方案,包括因不同软件使用的ADB版本不同而导致的连接失败,通过替换ADB文件来解决问题。

案例1

报错信息如下
C:\Users\linux>adb shell
adb server version (31) doesn’t match this client (36); killing…

  • daemon started successfully *
    error: no devices/emulators found

    这里写图片描述

    错误原因:
    adb版本不对
    因为我升级了SDK,导致sdk\platform-tools\adb.exe文件更新升级了,而手机客户端不能连接上去

    (百度里面google说的都是什么端口占用,但是我的不是)

    怎么解决
    我找到以前的sdk里面的adb.exe文件,使用旧版的adb.exe文件替换sdk\platform-tools\adb.exe文件,完美解决


    我的系统是win10 64位,我上传一个对应的adb文件上来,需要的朋友可以下载。
    下载地址如下
    点击下载64位的adb.exe

###案例2
情景:android studio+海马玩模拟器
环境变量:PATH中指定了adb路径是C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe
报错:adb server version (31) doesn’t match this client (39); killing…

分析:海马玩和sdk中adb版本不一致
验证:1、打开海马玩路径,查看对应的adb版本信息

C:\Program Files (x86)\Droid4X>adb -version
Android Debug Bridge version 1.0.31

2、再看看我们sdk路径下对应的adb版本信息

C:\Users\dell>adb -version
Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android
Installed as C:\Users\dell\AppData\Local\Android\sdk\platform-tools\adb.exe

解决:直接用sdk\platform-tools\adb.exe下面的adb替换海马玩的adb

案例2

报错信息如下
C:\Users\linux>adb shell
adb server version (31) doesn’t match this client (40); killing…

1、参考
https://www.cnblogs.com/shuang-cool/p/9300438.html

360占用了端口,干掉进程

2、我的情况应用宝占用端口

电脑安装了qq或者是电脑管家,这时候会自动的安装应用宝
应用宝路劲
C:\Users\Administrator\AppData\Roaming\Tencent\AndroidServer\1.0.0.588
查看应用宝的tadb的版本号
C:\Users\Administrator\AppData\Roaming\Tencent\AndroidServer\1.0.0.588>tadb version
Android Debug Bridge version 1.0.31

3、解决方案
要么干掉进程,要么就用我们的adb替换应用宝的adb。

C:\Users\Administrator>adb version
Android Debug Bridge version 1.0.40
Version 28.0.2-5303910
Installed as C:\Users\Administrator\AppData\Local\Android\sdk\platform-tools\adb.exe

adb version就这可以找到我们sdk的adb的版本和路径,然后将这个adb文件替换Tencent\AndroidServer\1.0.0.588下面的tadb文件就可以了。

install disconnected
Installation failed because the device “huawei-kiw_tl00-NHGDU15C08025532” disconnected.
安装apk就出现disconnected,然后就是offline,换数据线就好 。如果还不行,换手机吧,珍惜自己的时间比较重要。https://blog.csdn.net/qq_33495943/article/details/79487143?utm_source=blogkpcl9

电脑上:
adb server:在 PC 上常驻的进程,负责和手机通信(版本 41 或 39 指的就是它)。
adb client:你在终端里执行 adb … 时用的程序(你这边是 39)。
手机里:
adbd:手机里的 adb 守护进程,只负责和电脑上的 adb server 通信,不参与 “41 vs 39” 的版本号。
报错 “adb server version (41) doesn’t match this client (39)” 的意思是:
电脑上已经有一个 adb server 在跑,它是用 41 那套 adb 启动的(多半是 Android Studio 启动的)。
你在终端里执行的 adb 是 39 那套(client)。
client (39) 发现连上的 server (41) 版本和自己不一致,就会把当前 server 关掉,再自己起一个 39 的 server。
所以:41 和 39 都是电脑上的 adb(server/client)版本,和手机里的 adb 无关。 手机里的 adbd 只是被动和电脑上当前在跑的那个 adb server 通信。
那么这个server到底在哪里,我们来查下
使用adb help可以查adb的路径
adb help
Android Debug Bridge version 1.0.39
Version 1:8.1.1-1+r23-5.4-1+eagle
Installed as /usr/lib/android-sdk/platform-tools/adb

然后我们关闭Android studio,再打开看看as用的是哪个adb

ss -tlnp | grep 5037
LISTEN 0 128 127.0.0.1:5037 0.0.0.0:* users:((“adb”,pid=106847,fd=7))
sjhu@sjhu:~/Downloads$
sjhu@sjhu:~/Downloads$
sjhu@sjhu:~/Downloads$
sjhu@sjhu:~/Downloads$ readlink -f /proc/106847/exe
/home/sjhu/Android/Sdk/platform-tools/adb
结论很明显了
当前在跑的 adb server(41) 对应的可执行文件是:
/home/sjhu/Android/Sdk/platform-tools/adb
也就是你用户目录下的 Android SDK(一般就是 Android Studio 用的那个 SDK),不是手机里的东西。
106703 那个是 Android Studio 自带的 JBR(Java),和 adb 无关。
和终端的区别
adb server(41):/home/sjhu/Android/Sdk/platform-tools/adb(AS 用的、在监听 5037 的进程)
终端里的 adb(39):PATH 里先被找到的是 /usr/lib/android-sdk/platform-tools/adb
所以你在终端执行 adb 时,用的是 39 的 client,连上 41 的 server,就会报 “server version (41) doesn’t match this client (39); killing…”。

解决办法(二选一)
方案 A:让终端也用 41 这套(推荐)
在终端里用和 server 同一套 adb,就不会杀 server、设备也不会断:
export PATH=“/home/sjhu/Android/Sdk/platform-tools:$PATH”
或每次用完整路径:
/home/sjhu/Android/Sdk/platform-tools/adb shell cmd notification post -S bigtext -t “ADB测试” “ADBTest” “这是一条用 adb 模拟的通知”
想长期生效就把 export PATH=… 写进 ~/.bashrc,然后 source ~/.bashrc。
方案 B:让 AS 用系统的 39
在 Android Studio 里把 Android SDK Location 改成 /usr/lib/android-sdk,这样 AS 起的 adb server 也是 39,和终端一致,但 AS 会改用系统那套 SDK。

小结:adb server (41) 在电脑上的 /home/sjhu/Android/Sdk/platform-tools/adb;终端里的是 /usr/lib/android-sdk/platform-tools/adb (39)。让终端用 ~/Android/Sdk/platform-tools 的 adb 就能和当前 server 一致,不再杀进程、不断设备。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值