案例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 一致,不再杀进程、不断设备。
本文针对ADB版本不一致导致的问题提供了解决方案,包括因不同软件使用的ADB版本不同而导致的连接失败,通过替换ADB文件来解决问题。
547

被折叠的 条评论
为什么被折叠?



