解决“adb server版本与此客户端不匹配”错误

137

我正在使用Python运行我的Appium脚本,而不是使用py.test,因为py.test与我想从文本文件中获取的变量不兼容。当我使用Python运行我的脚本时,除了我的第一个方法总是出错之外,一切都正常。

有人知道如何修复以下错误吗?

adb server version (31) doesn't match this client (36)
adb server version (32) doesn't match this client (36); killing...

你能否粘贴剩余的错误日志? - Gaurav Lad
http://pro.sr1.me/post/android-sdk-download-links,我用这个来降级平台工具。 - Zam
2
在我的情况下,这是由于在同一台机器上运行具有Android Xamarin项目的Visual Studio和Android Studio - 每个IDE都有不同版本的adb服务器运行。我关闭了Visual Studio,错误消失了。 - dodgy_coder
17个回答

177
在我的情况下,基于Ubuntu操作系统的解决方案如下:
adb kill-server
sudo cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb
sudo chmod +x /usr/bin/adb
adb start-server

赞成: https://dev59.com/2VoV5IYBdhLWcg3wErWD#38166059


5
为了保持文件更新,我使用了符号链接而不是复制。翻译后的命令为:sudo ln -s ~/Android/Sdk/platform-tools/adb /usr/bin/adb - Joao
如果/usr/bin/adb不被允许,您可以使用/usr/local/bin/adb代替。 - Roland van der Linden

172

我通过以下方法解决了这个问题:

  1. 进入GenyMotion设置 -> ADB选项卡,
  2. 选择使用自定义Android SDK工具,而不是默认的使用Genymotion Android工具,然后浏览到我安装的SDK路径。

3
有没有办法更新 Android SDK 中的 ADB? - SalahAdDin
抱歉,我完全没有检查过这个。我使用的是Appium而不是GenyMotion。 - DevBrandonJ
2
设置可在Genymotion应用程序内单独使用,而不在Android Studio内。 - nizam.sp
2
Android Studio使用此路径:/Users/<username>/Library/Android/sdk......Homebrew使用此路径:/usr/local/Cellar/android-sdk/<version>,在我的情况下<version>为24.4.1_1。 - Jarvis
从Genymotion 2.6开始,如果您想安装Google应用程序包(Play服务所需),则必须在genymotion的设置中将SDK路径选项设置为“使用Genymotion Android工具(默认)”。当我这样做时,在adb start-server中出现了以下错误:“adb服务器版本(32)与此客户端(36)不匹配;正在终止...”。 - Gem
你是个救命恩人兄弟。 - Hamed Heidari

61

出现此错误的一个可能原因是在进行调试时,开发机和连接的设备/模拟器中的adb版本不同。

解决方法如下:

  1. 首先断开设备/模拟器连接。
  2. 在终端/命令提示符中运行以下命令:

    adb kill-server
    adb start-server
    

这将成功启动adb。现在您可以连接设备。 希望对您有所帮助。


是的,我已经这样做了,因为我认为那可能是问题所在。在运行Python脚本之前,我在我的Bash脚本中添加了一些内容。我相信我知道问题出在哪里,但不确定如何解决。谢谢你。 - DevBrandonJ
1
将Genymotion SDK路径更改并重新启动adb服务器对我有效。以防万一有人更改了路径但没有任何反应。 - Tinashe Chinyanga

40
似乎你的系统里有两个adb版本,请找出它们并只保留Android SDK文件夹中的adb,删除所有包括adb文件的其它文件夹。你可以从应用程序监视器(Application Monitor)里找到正在使用的adb版本:

进入图片描述

如果你的adb不在Android SDK文件夹里,可能会出现问题。
在我的情况下,我发现我正在运行以下路径下的adb:

/Library/Application Support/RSupport/Mobizen2

删除Mobizen2文件夹后,所有adb命令正常工作。

1
我曾经安装了"TC Games",它包含了自己的adb,但是当我将其卸载后,一切都恢复正常了。 - Pierre

34

完全一样的问题。 尝试杀死和启动,但这个方法对我起作用:

adb reconnect

希望这能帮到你。


1
实际上这个方法可行。我没有使用Genymotion,只安装了一个ADB(我甚至卸载了之前的ADB并重新安装了一遍)。 - El Mac
这只是一个临时解决方案;并不能解决您的系统上有多个adb版本的根本问题。 - Oke Uwechue

28

对于仍然遇到此问题的人(在Windows上):

  1. 打开任务管理器
  2. 进入进程并选择ADB.EXE
  3. 右击它并检查属性
  4. 很可能你会看到与adb.exe运行位置不同的路径(如HTC Manager,Genymotion等)
  5. 结束该进程
  6. 从Android Studio路径运行ADB.exe(在我的情况下:C:\Users\%user%\AppData\Local\Android\sdk\platform-tools)

这在我这里解决了问题。


Intel XDK 运行其自己的 abd 版本,这导致我在使用 Android Studio 时出现了错误。 - Nowdeen
1
好的,我遇到了同样的问题,你的提示帮了我很多!非常感谢! 这是由Splashtop Wired XDisplay引起的...我必须关闭那个程序。 - THE-E
HTC Sync(曾用于开发旧手机...停止使用手机,仍在使用遗留的adb)。谢谢!!! - TamusJRoyce
我之前已经启动了 Mobile Assistant 应用程序,然后再运行 adb。 - Piroxiljin
这对我有效。 - lsc

13

在Windows上,只需在Windows任务管理器中检查是否有任何其他adb进程正在运行。

或者运行adb kill-server

如果是这样,请终止它,然后执行adb start-server命令。

我希望这能解决问题。


这对我有用。不确定其他ADB服务器来自哪里,但它不是预期的,因此不需要。谢谢。 - JoelAZ

12

很可能您的计算机上有多个adb版本。您使用一个版本启动adb服务器,然后尝试使用另一个版本连接到该服务器。 例如 - Genymotion具有自己的adb,如果您启动Genymotion模拟器,然后尝试使用Android SDK中的adb,很可能会出现此错误(最新的Genymotion 2.7.2具有adb版本1.0.32,而最新的Android SDK具有adb版本1.0.36)。


如果我仍然想使用Genymotion,但遇到这种情况该怎么办?降低我的adb版本吗? - Juan José Melero Gómez
1
好的,我曾经遇到过同样的问题,最终用最新版的Android SDK中的adb替换了Genymotion版本的adb。我不确定这是否是最佳解决方案,但它有效。 - user1991679
2
将adb.exe从Android SDK(应该在platform-tools文件夹中)复制到Genymotion(应该在tools文件夹中)。例如,如果Android SDK安装在C:\android-sdk中,而Genymotion安装在c:\ Program Files \ Genymobile \ Genymotion中,则需要将文件从c:\ android-sdk \ platform-tools \ adb.exe复制到c:\ Program Files \ Genymobile \ Genymotion \ tools \ adb.exe(备份一份副本...以防万一)。 - user1991679
卸载多余的adb版本解决了问题,谢谢! - alierdogan7
2
您还可以在Genymotion设置中更改SDK工具路径。默认情况下,Genymotion使用自己的SDK工具。只需将Genymotion指向您的SDK文件夹即可。关闭模拟器,进入Genymotion设置,然后选择ADB选项卡,并选择使用自定义Android SDK工具并提供路径。 - CuriousGeorge
显示剩余2条评论

8

对于已经安装了HTC Sync的用户,卸载该应用程序可以解决这个问题。


或者从任务管理器中停止其服务。 - Ahmad Shahwaiz
这对我有用!谢谢,非常烦人的“修复”。 - MomasVII

7
对我来说,这是因为我在两个地方安装了Android工具: 1. 我从谷歌手动下载的位置 2. Android studio自动下载的位置
我所能做的就是完全删除#1文件夹,并将我的bash配置文件和所有其他引用指向Android Studio为我安装的位置:/ Users / my_user_name / Library / Android / sdk
这样就解决了问题。

这也是我遇到的情况。当我安装 Xamarin 以进行 iOS 相关的开发时,它也会安装自己的 Android SDK 版本。我删除了位于 /Users/myname/Library/Developer/Xamarin 的 Xamarin Android SDK 文件夹。 - Adam Johns

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接