问题
使用 adb 命令的时候报错如下:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
error:
问题原因
不同软件中的 adb.exe 版本冲突。调用的 adb 命令的版本 和 android_sdk/platform-tools 目录下的 adb 版本不一样导致的(即调用的可能不是 android_sdk/platform-tools 目录下的 adb)。
解决方法
以我之前的举例:
1. 首先查看 Genymotion 配置的 sdk 路径要保持和 Android_sdk 的 SDK 路径一致,如下图所示:
2. 查看环境变量是否配置了多个 adb 路径,导致命令行调用的时候调用了错误版本的 adb
(1)在此电脑中搜索 adb.exe,可以看到除了Android_sdk里有 adb.exe,Monkey中也有adb.exe,你的可能还有其他的。
3. 查看系统调用的是否是 Android_sdk 中的 adb.exe。
(1)打开 命令行,输入 adb version:
C:\WINDOWS\system32>adb version
结果如下:adb 的版本为 1.0.32
Android Debug Bridge version 1.0.
(2)进入到Android_sdk 配置的 sdk 路径,执行 adb.exe:
C:\WINDOWS\system32>cd /d D:\Android_sdk\android-sdk-windows\platform-tools\ D:\Android_sdk\android-sdk-windows\platform-tools>adb.exe version
结果如下:adb 的版本为 1.0.41
Android Debug Bridge version 1.0.
Version 29.0.-
Installed as D:\Android_sdk\android-sdk-windows\platform-tools\adb.exe
(3)对比:从上面我们可以看到两个 adb 的版本是不一致的,说明我们调用 adb 的时候并不是用的 Android_sdk 中的 adb.exe。查看之前第1步中查出的其他的 adb.exe 的版本,若有与第2步中的(1)步骤结果一样的版本号,则说明问题就出在它身上,我们在直接调用或开启adb的时候,可能就是调用的它,而不是Android_sdk 中的adb.exe。
(4)验证一下第 (3)步。转到 上面查到的其他的 adb.exe 目录下,执行 adb.exe version,以我的Monkey目录中的 adb.exe 为例:
D:\Android_sdk\android-sdk-windows\platform-tools>cd /d D:\Monkey\platform-tools_r22-windows\platform-tools D:\Monkey\platform-tools_r22-windows\platform-tools>adb.exe version
结果如下:adb 的版本为 1.0.32
Android Debug Bridge version 1.0.
可以看到 这个版本和上面的一样,所以,问题就出在它的身上,我们只需要删除这个目录下的adb.exe即可,再去调用adb的时候你会发现问题已经解决了。