如何解决此ADB服务器版本与android中的此客户端错误不匹配?

时间:2018-09-21 12:30:07

标签: adb appium-android

adb server version (39) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon
adb: error: failed to get feature set: protocol fault (couldn't read status): Connection reset by peer
* daemon not running; starting now at tcp:5037
* daemon started successfully
- waiting for device -
error: protocol fault (couldn't read status): Connection reset by peer

13 个答案:

答案 0 :(得分:2)

可能您的系统中的两个不同位置都有两个adb版本。正在运行的服务器版本为39,而adb客户端版本为40。您可以通过在PC中仅保留一个adb来解决此问题。 您可以如下图所示

  

在Linux中,如果将adb二进制文件添加到路径中,则以下命令可为您提供adb位置。

which adb

如果adb未添加到路径,并且仍然出现此错误,请使用以下命令搜索adb。

locate adb

如果您的adb客户端不在上述位置,则可以将最新版本添加到上述路径,并删除旧的adb版本。

如果您使用的是Windows,则要找出两个adb位置,并且只能放在一个位置。

答案 1 :(得分:2)

在Linux中遇到此错误时,我删除了我的adb文件

/usr/bin/

并替换为一个

/Android/Sdk/platform-tools/

成功了。

答案 2 :(得分:1)

运行adb devices命令时,我遇到相同的问题。

adb devices
List of devices attached
adb server version (36) doesn't match this client (40); killing...
* daemon started successfully
2322dc3d    device

我运行了命令which adb,该命令为我提供了上一条命令正在使用的adb的位置,在我的情况下,输出为:

which adb
/usr/bin/adb

然后我运行了whereis adb命令,该命令为我提供了adb​​的位置:

whereis adb
adb: /usr/bin/adb /home/arefin/Android/Sdk/platform-tools/adb 
/usr/share/man/man1/adb.1.gz

通过使用/usr/bin命令将adb从mv目录中移出,我摆脱了这个问题:

/usr/bin$ `sudo mv adb /home/arefin/Desktop/`

此后,我执行了该命令adb kill-server,然后运行了adb devices。这次我发现一切都很好。

我在$HOME/.profile文件中的与Android开发相关的路径如下:

export ANDROID_HOME=/home/arefin/Android/Sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$JAVA_HOME/bin

答案 3 :(得分:1)

我自己遇到了这个问题,没有任何在线解决方案对我有用。 这样做是偶然的,它解决了我的问题!

我正在Macbook Pro上使用Android Studio。

首先,我尝试从brew安装adb:

brew cask install android-platform-tools

然后我将其卸载:

brew cask uninstall android-platform-tools

最后一行之后,adb在终端中不起作用,但立即在Android Studio中起作用! = D

发布,以便对他人有帮助-祝您好运!

答案 4 :(得分:1)

正如之前的回答所指出的,这是由于您的系统中安装了多个 adb 版本。一个可能来自通过 android-sdk-platform-tools 安装的 apt,另一个来自 Android Sdk 本身(通常是较新的版本)。

在 Ubuntu(或基于 Ubuntu 的操作系统)中解决此问题的最简单方法是在 ~/.bashrc 文件末尾添加此行:

alias adb='~/Android/Sdk/platform-tools/adb' 
#Change path according to your Android Sdk installation directory

然后重新打开终端以反映更改。

这也避免了弄乱系统文件的需要。

答案 5 :(得分:0)

适用于Windows的简单答案:

  • 确保adb可执行文件的子目录中有侧载文件(whatever.bin)。

  • 确保adb可执行文件夹和子目录位于PATH中(在Windows中查找DOS命令以获取PATH)

  • 在与侧载文件相同的目录中打开命令提示符

  • 输入您的命令,例如:

    adb sideload mynewrom-5.4.3.2.1.bin
    

(您的设备必须处于恢复状态-发送之前处于侧载状态)

答案 6 :(得分:0)

运行

tasklist | findstr adb

然后杀死重复的进程

TASKKILL /PID "PID_NUMBER" /f

答案 7 :(得分:0)

我知道这有点旧,但是如果您有此问题并且已安装Vysor,则可以通过在Vysor应用程序文件夹中查找adb.exe(和Adb * .dll文件)并替换来解决此问题。从您的Android SDK文件夹 。我在Windows计算机上,对我来说相关的路径是:

  • 维索
    • C:\ Users \\ AppData \ Roaming \ Vysor \ crx \ gidgenkbbabolejbgbpnhbimgjbffefm \ app-2.1.7.crx-unpacked \ native \ win32 *
    • (我猜测路径会根据版本等而有所不同,但这有望帮助您找出答案。)
  • APK
    • C:\ Users \\ AppData \ Local \ Android \ Sdk \ platform-tools

在我的计算机上,相关文件为:

  • adb.exe,
  • AdbWinApi.dll,
  • AdbWinUsbApi.dll

此后,您将需要按照本文其他答案中的说明终止现有的ADB任务。

答案 8 :(得分:0)

在我的情况下,我在Windows机器上安装了“ AirDroid”,并且运行了“ AirDroid_adb.exe ”,为了使一切正常,我不得不将其杀死。我已经报告说他们正在使用旧版本的adb,希望他们会修复它。

答案 9 :(得分:0)

对于 ubuntu(更准确地说 - kubuntu),我遇到了类似的问题。

问题出在 android-studio,要修复它,您需要执行以下步骤:

  1. 转到 SDK 管理器
  2. 在 SDK 管理器中点击 SDK 工具菜单。
  3. 取消选中“Android SDK 命令行工具(最新)”

答案 10 :(得分:0)

我在连接到我的 SFTP Server 应用时遇到了同样的问题,可以按如下方式解决:

错误是由冲突的 adb 安装引起的(在我的例子中是 Ubuntu 18.04.5 LTS)。一种安装随 AndroidStudio (IntelliJ) 一起位于 .../Sdk/platform-tools,另一种随包管理器安装 apt install 一起位于可执行文件的标准目录 /usr/bin 中。 AndroidStudio (IntelliJ) 的安装位置可以在 AndroidStudio (IntelliJ) 菜单中找到:Tools → Android → SDK Manager: Android SDK Location。调用命令which adb可以找到与包管理器相关的安装位置。

而解决此问题的方法是卸载其中之一。

根据您的用例,如果您大部分时间都在使用 AndroidStudio (IntelliJ)(并且此版本是最新版本),则删除随包管理器安装的(过时)版本,如下所示。

>

要卸载,首先使用以下命令找出与 /usr/bin/adb 相关的软件包:dpkg -S /usr/bin/adb

然后调用 apt autoremove adb 卸载 adb 包及其所有依赖项。

最后但并非最不重要的是为了仍然能够从命令行调用 adb 更新“/etc/profile”中的 PATH 变量,如果它应该可供所有用户访问,或者 ~/.bash_profile 或 ~/ .profile(以存在者为准),如果它应该只可供当前用户访问,并在末尾附加路径“.../Sdk/platform-tools”(您在上面查找过)。然后重新启动或注销并登录以应用新路径。

答案 11 :(得分:0)

重启你的系统,对你也有用。

答案 12 :(得分:0)

我遇到了以下错误,在我的情况下只是重新启动系统。

could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon code here
adb.exe: failed to check server version: cannot connect to daemon