Adb 服务器版本与此客户端不匹配

每当我尝试运行 adb devices:

            $ adb devices
* daemon not running. starting it now *
* daemon started successfully *
List of devices attached
HT0ANRV05740    device

它说守护进程没有运行并重新启动守护进程。

然后,如果我再次运行 adb 设备,它会做同样的事情-

            $ adb devices
adb server is out of date.  killing...
* daemon started successfully *
List of devices attached
HT0ANRV05740    device

然后,如果我再次运行它,它再次做完全相同的事情-

            $ adb devices
adb server is out of date.  killing...
* daemon started successfully *
List of devices attached
HT0ANRV05740    device

救命啊!

此外,我的 DDMS 不断给我以下消息-

[2011-02-23 16:17:05 - DeviceMonitor]Adb connection Error:An existing connection was forcibly closed by the remote host

下面是 adb 重新启动之前的日志-

              1291        locapi_rpc_glue  V  loc_ioctl
1291                    RPC  D  written RPC packet size: [480]
1291                    RPC  D  read RPC packet
1291                    RPC  D  read RPC packet size: [28]
1291             lib_locapi  V  qct_loc_eng_inject_xtra_data, inject part = 100, len = 167, len = 167
1291             lib_locapi  V  qct_loc_eng_inject_xtra_data, total part = 100, len = 167
1291        locapi_rpc_glue  V  loc_ioctl
1291                    RPC  D  written RPC packet size: [248]
1291                    RPC  D  read RPC packet
1291                    RPC  D  read RPC packet size: [28]
1291             lib_locapi  D  qct_loc_eng_inject_xtra_data: injected 39767, SUCCESS
1291             lib_locapi  V  inject_xtra_waiting = flase
1291    GpsLocationProvider  D  Releasing wakelock
1291            WifiService  D  releaseWifiLockLocked: WifiLock{NetworkLocationProvider type=2 binder=android.os.Binder@47aead50}
1291            WifiService  D  enable and start wifi due to updateWifiState
1218            rmt_storage  I  rmt_storage open event
1218            rmt_storage  I  rmt_storage client thread started
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  rmt_storage register cb event
1218            rmt_storage  I  rmt_storage status id = 2
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  rmt_storage open event
1218            rmt_storage  I  rmt_storage client thread started
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  rmt_storage register cb event
1218            rmt_storage  I  rmt_storage status id = 2
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  rmt_storage write event
1218            rmt_storage  I  unblock rmt_storage client thread
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  rmt_storage write: bytes written = 3145216
1218            rmt_storage  I  rmt_storage write: bytes written = 512
1218            rmt_storage  I  rmt_storage status handle = 1
1291       BatteryStatsImpl  I  notePhoneSignalStrengthLocked: 4->3
1218            rmt_storage  I  rmt_storage write event
1218            rmt_storage  I  rmt_storage events processing done
1218            rmt_storage  I  unblock rmt_storage client thread
1291    PowerManagerService  D  New lightsensor value:40, lcdValue:143
1291    PowerManagerService  D  lightSensorChangedLocked, buttonValue >= 0, mPowerState = 3
1218            rmt_storage  I  rmt_storage write: bytes written = 3145216
1218            rmt_storage  I  rmt_storage write: bytes written = 512
1218            rmt_storage  I  rmt_storage status handle = 2
1291                    RPC  D  read RPC packet
1291                    RPC  D  read RPC packet size: [80]
1291        locapi_rpc_glue  V  Callback received: 80 (cb_id=0x50B0000 handle=1)
1291                    RPC  D  written RPC packet size: [28]
1470   usicWidgetController  D  unbindMusicPlaybackService()
1707   MediaPlaybackService  E  BadQueue mPlayListLen : 0 mAlbumListLen : 0 mShrinkAlbumListLen : 0
1291    NotificationService  V  Battery Full, Charging
1291                 lights  E  write ok string=0,len=1
1291                 lights  E  write ok string=0,len=1
1291                 lights  E  write ok string=0 0,len=3
1291                 lights  E  write ok string=1,len=1
1707       MediaPlayer.java  D  setOnCompletionListener being cleaned to null
1291                 lights  E  write ok string=0,len=1
1291                 lights  E  write ok string=0 0,len=3
1291    NotificationService  V  Turn off Jogball/OJ LED
1291    NotificationService  D  cancelNotification, ACTION_NOTIFICATION_REMOVE,pkg=com.htc.music,id=1
1291           AudioService  I   AudioFocus  abandonAudioFocus() from android.media.AudioManager@476ddee0com.htc.music.MediaPlaybackService$5@476dd838
201467 次浏览

似乎设备上的 ADB 守护进程(adbd)不同意主机上的 ADB 服务器进程所使用的协议版本。您正在运行的 SDK 的哪个版本以及您正在调试的设备上的 OS 版本是什么?

您可能需要做的是实际降低 SDK 工具的版本,以便 ADB 守护进程和进程达成一致。我认为服务器进程是完全向后兼容的,但这可能是其中一个不兼容的角落情况。Google 并没有宣称你可以得到他们的旧 SDK 工具包,但是你可以在 http://developer.android.com的存档区找到它们。

我发现我偶尔需要手动显式地终止和重启服务器:

adb kill-server
adb start-server

这种震动通常足以让它重新站起来,并防止重复 adb server is out of date. killing...信息。

你有没有试过使用 SDK 版本8。因为设备是2.2版本,而 SDK 是10版本,所以可能会有冲突。

祝你降级顺利!

试试这个:

  1. 关闭 Eclipse 应用程序。

  2. adb kill-server

  3. 重启 Eclipse。

如果你试图与之交互的设备是一个通过 USB 连接的物理手机,你可以拔掉它的插头,再插回去,它应该可以工作。我觉得有时候就是不同步。

您需要确保您的项目设置为您想要启动的 AVD 目标。

在 Eclipse 中的项目文件夹上右键单击(ctrl-click MAC)。然后点击属性。在显示的窗口中,单击“ Android”,然后单击要启动的构建目标。希望能帮上忙。

我卸载戴尔电脑套件和 HTC 同步从我的电脑和这个问题消失了。

编辑: 详细说明这个问题的原因: HTC sync 自带 ADB 服务器。并且它会更新您的 PATH 环境变量以指向它的服务器版本。编辑 PATH 变量并删除对 HTC Sync 目录的引用。现在你又在使用谷歌的亚洲开发银行了。

我退出了 HTC Sync 再试一次,成功了。 注意: 手机变黑(锁定) ,我刚刚打开它,并有我的应用程序运行。 :)

我只是完全关闭了 htc 的同步应用程序,然后再试一次。

这次我真是撞墙了。当我安装最新版本的 HTC sync (3.0.5579)时,这种情况开始出现。由于某种原因,adb.exe 在任务管理器中多次显示,我发现 adb 服务器过期了,多次杀死错误。我在 HTC sync 目录和 Android SDK Platform-tools 目录中找到了 adb.exe 版本。我将路径设置正确地指向 android SDK 目录,但没有看到 HTC 同步路径(也许我遗漏了什么,但我不这么认为)。无论如何,为了解决这个问题,我只是重命名了 HTC Sync 目录中的 adb.exe 文件,一切都恢复正常了。这可能不是解决问题的正确方法,但对我很有效。

在我的一台开发机器上(所有机器都运行 Windows7x64) ,而所有其他机器的 adb 正常工作时,我遇到了这个问题。我遇到这个问题的原因是我有一个旧版本的 Adb.exe驻留在 Android-sdk% tools中,而较新的 Android SDK 在 平台工具下有 adb.exe

从% android-sdk% tools 中删除旧的 adb.exe,并将% android-sdk% Platform-tools 添加到% PATH% 解决了这个问题

或者更一般地说,搜索路径中任何过时的 adb 可执行文件,只需使用 Android SDK 提供的最新版本

它帮助了我

  • 停止 HTC 同步(在系统托盘中)

  • 重命名 HTC 的 adb.exe:

     C:\Program Files (x86)\HTC\HTC Sync 3.0\adb.exe.
    

我把所有的答案都看了一遍,但是对我没有用。当我从 Task Manager 中关闭 adb.exe 进程时,它一直在重新打开它,原因是 Droid Explorer 在后台工作

通过 Task Manager 关闭 DE 进程,然后关闭 adb.exe (并通过“ adb start-server”从控制台再次运行它)对我来说很有用。

这对于许多 那些植根于他们设备的人都是有用的。

如上所述,问题来自 HTC Sync 附带的 Adb.exe版本之间的冲突。从 PATH 中删除它没有帮助,因为经常在后台运行的 加载器.exe仍然会重新启动错误的 ADB 版本。

一种解决方案是从 HTC Sync 文件夹中完全删除 Adb.exe,但这会破坏 HTC Sync。

我刚刚编写了 一个简单的工具代码,用一个存根取代了旧的 Adb.exe,这个存根调用 SDK 目录中的最新 Adb.exe,消除了冲突(例如 HTC Sync 版本1.0.25和 Android SDK 版本1.0.29)。

ADB Fixer tool

该工具可以从 http://visualgdb.com/adbfix下载

你在用 Genymotion 做虚拟设备吗?

如果是,这个错误可能是因为来自 Genymotion 的 ADB 与来自 Android SDK 的 ADB (使用相同的端口号)发生冲突而出现的,要修复这个错误,只需转到 settings = > select ADB tab = > 单击选项 Use custom Android SDK Tools并设置 SDK 文件夹

enter image description here

配置完成后,尝试进入 adb放置的文件夹 platform-tools重新启动 adb,并执行以下命令:

  • ./adb kill-server
  • ./adb start-server

提示: 在运行上面的命令之前,您可以关闭 Genymotion 的进程

希望这个能帮上忙。

好的,还有一个 adb.exe 的实例,它与“联想照片同伴”一起发布。我的一个朋友有一个联想瑜伽笔记本,并安装了这个软件,其中包括另一个 adb.exe

拆除它解决了问题。

我今天也有这个问题,原来我禁用了我的网络驱动程序,因为我有 WIFI/LAN 的问题。重新启用解决了这个问题

不幸的是,我还没有足够的声誉来发表评论。但是这个标记为答案的回答让我找到了正确的方向。

在我的路径中没有看到任何与 HTC 同步管理器相关的东西,尽管我已经安装了它。我现在不使用我的 HTC 设备,只安装了同步管理器来帮助解决驱动程序问题。一旦卸载了 HTC 的同步管理器,这个问题对我来说就解决了。

希望这能帮到别人。

确保没有其他 adb 进程在运行

在系统上运行的 adb 进程可能不止一个。诸如 安卓系统反向系绳之类的工具可能使用它们自己版本的 adb 工具,因此内存中的版本可能与从命令行运行的版本(通过 path 变量)冲突。

窗户

在 Windows 中,按 CTL + Shift + ESC访问 Task Manager,在 图片名称列中进行排序,然后右键单击并选择 结束程序杀死所有 adb.exe实例。请注意,下面有多个 adb.exe实例:

Multiple adb.exe instances - how to kill

Linux (Android)

在 Linux 环境中,只需使用 kill -9命令。这种方法在运行 adb的 Android 设备上可行(使用 ps输出,使用 grep搜索从 adb开始的进程,从 adb进程获取进程 ID,然后将该 ID 发送给 kill -9命令) :

kill -9  $(ps  | grep "S adb" | busybox awk '{print $2}')

然后,重新启动 adb

一旦解决了 adb进程(因此也解决了冲突) ,然后再次尝试从命令行运行 adb:

adb start-server

在我的机器(Ubuntu14.04和 Genymotion 2.5.2)中,问题的根源是,我有两个不同版本的 adb 文件。

(在缩小这个问题的来源之前,我已经有了 Genymotion 的设置 > “使用自定义 Android SDK 工具”,这是指我机器上安装的 Android SDK 目录,Aditya Kresna Permana 建议的。我还尝试过关闭和启动 adb 服务器,以及网络上其他一些解决方案)。

然后看到,在我的 Android SDK 安装目录“ ~/Android/SDK/Platform-tools”中运行 adb version产生了——“ Android Debug Bridge version 1.0.32”

但是,从“/usr/bin”目录生成了 adb version命令-“ Android Debug Bridge version 1.0.31”

接下来-http://bernaerts.dyndns.org/linux/74-ubuntu/328-ubuntu-trusty-android-adb-fastboot-qtadb在“/usr/bin”中更新 adb

# adb version
Android Debug Bridge version 1.0.31
# wget -O - https://skia.googlesource.com/skia/+archive/cd048d18e0b81338c1a04b9749a00444597df394/platform_tools/android/bin/linux.tar.gz | tar -zxvf - adb
# sudo mv adb /usr/bin/adb
# sudo chmod +x /usr/bin/adb
# adb version
Android Debug Bridge version 1.0.32

现在运行 adb devices就像预期的那样完美。

它还解决了相关的问题,在我的 PhoneGap (Cordova)应用程序没有与 Genymotion 的虚拟设备集成之前。显然这个问题也解决了。

我在启动 Android Studio 时也遇到了同样的错误。 卸载 Mobogenie 软件,成功了。 试试这个解决方案,它帮助了我

首先关闭所有使用 ADB 的东西(Android Studio、 Eclipse、模拟器(还有 Bluestack)) 然后去做

adb kill-server
adb start-server

对我来说,我只是得到了工作室的更新。

这是因为您正在运行 SDK 中包含的 adb 以外的 adb。如果在 Linux 上,检查 adb 二进制文件位于何处

which adb
Expected Output : ANDROID_SDK/platform-tools/adb

如果没有指向 ANDROID _ SDK/Platform-tools/adb,那么您正在运行安装在机器上不同位置的某个旧版本的 adb。

运行 adb 除了 SDK 提供的版本之外没有什么错误,但缺点是当 android SDK 更新时,adb 不会自动更新,这就是为什么您会遇到这个过时的版本问题。

更简单的修复方法是将旧的(误导性的) adb 二进制文件重命名为其他文件,以避免将来出现这个问题。

按照以下步骤解决此问题。

$ which adb
*o/p /usr/bin/adb  -   (output will depend on your machine)*
$ cd /usr/bin/
$ ls -lt | grep adb
*o/p -rwxr-xr-x 1 root   root      160912 Mar 31  2016 adb*
$ sudo mv adb adb_bakup
$ ls -lt | grep adb
o/p -rwxr-xr-x 1 root   root      160912 Mar 31  2016 adb_bakup
$ export PATH="/path/to/android_sdk/platform-tools:$PATH"
$ which adb
*o/p <your android sdk dir>/platform-tools/adb*   ---> You are all good now

在我的例子中,问题是由 VirtustTen Studio 引起的,它在 External/ADB目录中有 adb.exe。

去那里,运行 .\adb.exe kill-server,你会很好。

系统: Windows10

我的问题 : 将 Genymotion 设置为指向定制 SDK 没有任何影响:

无法在 Android 上启动项目: 无法安装 侦听器: 无法绑定到127.0。0.1:5037: 每个套接字只有一种用法 地址(协议/网络地址/端口)通常是允许的 无法从 ADB 服务器读取 OK * 未能启动守护进程 * 错误: 无法连接到守护进程

我发现在整个系统中使用的 ADB 版本有所不同。下面是我用来找到它们的命令:

where /r C:\ adb.exe

结果是:

C:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe
C:\Program Files\Genymobile\Genymotion\tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe
C:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb backup\adb.exe

导航到每个目录并运行:

adb.exe version

让我看到了世博会运行的亚行版本:

Android Debug Bridge version 1.0.36
Revision fd9e4d07b0f5-android

使用定制 SDK 的 Genymotion 有版本(c: Users kyle AppData Local Android SDK Platform-tools adb.exe) :

Android Debug Bridge version 1.0.39
Revision 3db08f2c6889-android

作为测试,我从中获取了 adb 文件(adb.exe、 AdbWinApi.dll、 AdbWinUsbApi.dll)

c:\Users\kyle\AppData\Local\Android\Sdk\platform-tools\adb.exe

然后我把 adb 文件移动到

c:\Program Files\Expo XDE\resources\app\node_modules\xdl\binaries\windows\adb\adb.exe

在同一个地方,我杀了 adb 用的是:

adb kill-server

由于我的 Genymotion 设备已经运行,导致 adb 服务器自动重新启动。我点击了世博会 XDE 内部的“重启”按钮,它立即开始工作。这是我在凌晨1:13:04点按下重启按钮的日志:

12:45:53 AM
could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: Only one usage of each socket address (protocol/network address/port) is normally permitted. (10048)
could not read ok from ADB Server
* failed to start daemon *
error: cannot connect to daemon
1:13:04 AM
Restarting project and clearing packager cache (Hold shift while clicking restart to avoid clearing cache).
1:13:11 AM
Starting React Native packager...
1:13:17 AM
Scanning 543 folders for symlinks in C:\Users\kyle\git\betalog\node_modules (49ms)
1:13:17 AM
1:13:19 AM
Couldn't adb reverse: closed
1:13:20 AM
Project opened! You can now use the "Share" or "Device" buttons to view your project.
1:13:26 AM
Couldn't adb reverse: closed
1:13:26 AM
Downloading latest version of Expo
1:13:28 AM
Installing Expo on device
1:13:33 AM
Opening on Android device
1:13:56 AM
Building JavaScript bundle: finished in 59643ms.
1:14:01 AM
Dependency graph loaded.
1:14:03 AM
Your JavaScript transform cache is empty, rebuilding (this may take a minute).

结论: Genymotion 和 Expo 可能需要使用相同版本的 adb,以便 Expo 能够与模拟设备进行正确的通信。将 Genymotion 指向您的 android SDK 位置,并确保 Expo XDE 具有相同的版本,将允许设备之间进行正确的通信。我将 Expo XDE 版本移动到了 SDK 位置,但是您可能可以使用其他方法(获取 SDK ADB 文件并将它们放在 Expo XDE 资源位置中)。

附言。 我已经看过了所有与这个问题相关的堆栈溢出帖子。我的任务管理器显示了运行 adb.exe 的三个实例。如果你杀了他们中的任何一个,他们就会回来。

希望这能有所帮助/干杯

系统: Windows 7,Android Studio。

从 WindowsCommandline 运行 adb devices时发生此错误。

根本原因是 我从命令行运行的 adb 与从 Android Studio 运行的 adb 不同。

解决方案:

  1. 首先杀死机器上所有正在运行的 adb 进程。

    taskkill /F /IM adb.exe

  2. 在 Android Studio 上运行你的应用程序。

  3. 从 Windows 任务管理器中找到 adb.exe 的确切文件位置,或者通过 < a href = “ https://superuser.com/questions/768984/show-exe-File-path-of-running-process-on-the-command-line-in-Windows”> 运行下面的命令

    wmic process where "name='adb.exe'" get ProcessID, ExecutablePath

  4. 在命令提示符上,运行 where adb来定位在命令提示符下运行的 adb。此路径将与上面步骤3中的路径不同。

  5. 编辑 Windows 系统变量 PATH。从中删除步骤4中找到的基本路径。

  6. 编辑 PATH 之后,可以通过在 NEW 命令提示符中键入以下命令来查看该变量的当前内容(不要使用旧的提示符)

    echo %PATH%

现在,从命令提示符运行 adb。它不应该显示任何“服务器过期错误”!

操作系统: Ubuntu

正在运行的 adb 超过1个。请检查当前 adb:

    which adb
Expected Output : ANDROID_SDK/platform-tools/adb

通常情况下,结果会是:

    /usr/bin/adb

删除旧版本:

    cd /urs/bin
sudo rm adb

安装 sdk 更新(包括平台工具)为我修复!

由于 Adb 服务器已过期现在是这个的骗子,复制粘贴 基于 Debian 系统的解决方案:

这可能是您除了安装 这样的话,一个

sudo apt purge adb

也许能解决问题。

实际解释发生了什么:

ADB 可执行文件有两个组件

  • 服务器,它与设备通信
  • 和客户端,即与服务器通信的命令行。

当您第一次启动 ADB 时,您可能会注意到一个类似于“启动 ADB 服务器”的消息。如果在此之后更新了 ADB,则较新的可执行文件需要终止过时的服务器,并启动一个具有匹配版本的新服务器。

当您的开发机器上有多个版本的 ADB 时(Genymotion、 Android SDK、手机 OEM 配套应用程序、各种独立脚本) ,也可能发生这种情况。

这与安装在您的手机/模拟器上的 ADB 无关。

显而易见(不一定容易)的解决方案是确保在任何地方都使用相同的 ADB 版本。

我经历了一个类似的问题,我尝试使用 adb,如 adb logcat提供了这个错误输出:

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

这个解决方案 于2018年在 Ubuntu 18.04上使用 Android Studio 3.2.1的终端。

命令如下:

Adb 杀死服务器 Sudo cp ~/Android/Sdk/Platform-tools/adb/usr/bin/adb Sudo chmod + x/usr/bin/adb Adb start-server

您可能需要根据系统上到 Android/的路径调整 cp命令参数。

第二代荣誉我的来源: https://stackoverflow.com/a/40991118/7015599

在我的案例中,这是由于在 Android Studio 的同一台机器上运行 Visual Studio 和一个 Android Xamarin 项目造成的——每个 IDE 都运行不同的 adb 服务器版本。我关闭了 Visual Studio,错误消失了。

在过去一周左右的时间里,我两次看到以下错误:

adb server version (40) doesn't match this client (41)

我每次都是重新启动电脑来解决这个问题,我不知道该怎么解释。

我多次尝试通过命令行杀死和启动 adb,多次重新启动 Android Studio,但都无济于事。任务管理器不显示 adb.exe。

我在 Windows 10上运行 Android Studio 3.4(V1809,Build: 17763.503)

编辑(2019-05-30) : 当这种情况第三次发生时,我关闭了所有的应用程序,然后重新启动 Android Studio,问题就解决了。似乎是另一个应用程序导致了这种情况。我一找到凶手就会回来报告。

编辑(2019-05-30) : 我终于找到了罪魁祸首—— Visual Studio 与 Macbook Pro 配对,用于构建和调试 iOS 应用程序。一旦关闭 VS 或禁用配对,adb 就正常了。

在我的案例中,我更新了 SDK (在 genymotion 中的设置) ,或者是 genymotion 更新

有个快速的方法 首先

sudo rm /usr/bin/adb

然后

sudo ln -s /home/\{\{username}}/Android/Sdk/platform-tools/adb  /usr/bin/adb

解决问题的最快方法

问题 Iam 来自被标记为 [副本]的这个问题,但我还没有看到我需要的答案在这里。

ADB 服务器版本(41)与此客户端(36)不匹配; 杀死... ADB 服务器没有应答。

看这个: https://stackoverflow.com/a/47797366/8187578

如果你有多个 adb 的运行停止他们将做喜欢如果你正在使用 vs 代码为颤振开发关闭 vs 代码将有所帮助。

系统: Mac OS

在我的例子中,我没有运行两个 adb 服务器,所以没有一个解决方案有帮助。

我已经将 Android Studio 更新到了最新版本,但是我还安装了一个旧版本的 adb,使用的是酿酒桶。当我更新我的 Android Studio 到最新版本时,adb 仍然指向已安装的旧版本。

因此,在更新酿造木桶版本之后,使用:

brew cask install android-platform-tools

并且确保 adb 本身指向的是新版本,错误就消失了。

对于使用 Android 工作室开发的人员:

如果您使用命令行安装 adb,它可能会与 Flutter 安装的 adb 版本发生冲突。

问题根源分析

你可以很容易地用两个不同的版本来检查你是否有这个问题:

find /home -iname "*adb"|grep -i android

然后比较 adb version(位于 usr/bin/adb,很可能是/usr/lib/android-sdk/Platform-tools/adb 的符号链接)和 ~/Android/Sdk/platform-tools/adb version之间的返回值

你会得到这样的输出:

$ ~/Android/Sdk/platform-tools/adb version
Android Debug Bridge version 1.0.41
Version 30.0.5-6877874
Installed as /home/\{\{{user}}/Android/Sdk/platform-tools/adb


$ adb version
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
Installed as /usr/lib/android-sdk/platform-tools/adb

因此,我的建议如下: 不要依赖 sudo apt-get install adb

解决方案

1/您首先要删除通过命令行安装的 adb: (这比 sudo rm usr/bin/adb干净多了

sudo apt-get remove adb

2/然后创建从 sdk 到 usr/bin 的符号链接(已提供顶部答案) :

sudo ln -s ~/Android/Sdk/platform-tools/adb  /usr/bin/adb

现在可以使用不同的命令行 adb devicesadb start-serveradb kill-server

我做了以下我有相同的错误,在 mac 操作系统的匹配错误,我试图安装一个 apk。

  1. mv /usr/local/bin/adb /usr/local/bin/old_adb
  2. 重新安装平台工具 brew cask install android-platform-toolsbrew reinstall --cask android-platform-tools
  3. adb kill-server
  4. adb start-server

如果您试图安装 apk,请重新安装并检查。

通过用 Android 目录(~/Android/Sdk/platform-tools/adb)中的文件覆盖位于 /usr/bin/adb中的二进制文件,非常方便地解决了这个问题:

sudo cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb

您可以使用以下方法检查确切的存储库:

whereis adb