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
答案 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计算机上,对我来说相关的路径是:
在我的计算机上,相关文件为:
此后,您将需要按照本文其他答案中的说明终止现有的ADB任务。
答案 8 :(得分:0)
在我的情况下,我在Windows机器上安装了“ AirDroid”,并且运行了“ AirDroid_adb.exe ”,为了使一切正常,我不得不将其杀死。我已经报告说他们正在使用旧版本的adb,希望他们会修复它。
答案 9 :(得分:0)
对于 ubuntu(更准确地说 - kubuntu),我遇到了类似的问题。
问题出在 android-studio,要修复它,您需要执行以下步骤:
答案 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