我正在尝试连接到通过 genymotion 运行的 android vm。但是,当我尝试通过 adb 连接时,我不断收到以下错误消息:
adb server version (41) doesn't match this client (39); killing...
我看到很多人有这个问题,我尝试了所有方法,但出于某种原因,我仍然无法让它工作。我使用 android SDK 而不是 genymotion 的默认设置来运行 genymotion。
我认为错误可能出在我尝试让 genymotion 在其他安装步骤下正常工作时,因为当我执行时adb --version
我得到以下信息:
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
有其他人遇到过这个问题吗?如果有什么不同的话,我目前正在使用 Ubuntu 18.04,我的模拟器没有连接到 wifi。感谢所有提前回复的人。
答案1
这实际上解决了我的问题
sudo cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb
答案2
在 genymotion 中转到Settings→ADB并选择您安装的 SDK。
答案3
当我尝试使用 Android SDK 平台工具 ADB 而不是 Genymotion 提供的版本连接到 Genymotion VM 时,我确实遇到过该错误消息;但是,我并没有尝试配置 Genymotion 以使用 Android SDK 提供的 ADB。
我会尝试使用 Genymotion 提供的版本进行连接。听起来 Genymotion 可能不尊重您设置的配置。
这是我观察到的问题:
如该屏幕截图所示。当您尝试连接与 Genymotion 使用的版本不匹配的 ADB 版本时,肯定会发生此问题。
要确认 Genymotion 正在使用哪个版本(即确保它尊重您的配置),请运行以下命令:
netstat -tlpn | grep -i adb
这应该会告诉您监听连接的 ADB 服务器的进程 ID。使用该进程 ID,我们可以确定正在执行哪个版本的 ADB ls -la /proc/ADB_PROCESS_ID/
(显然,代入数字进程 ID)。
比如我可以看到我这边运行的ADB服务器是/opt/genymobile/genymotion/tools/adb
,如下图所示:
如果 Genymotion 确实使用了您期望的 ADB 版本,那么您可能需要运行which adb
并随后运行readlink "$(which adb)"
。 如果结果出乎意料,那么您应该确保正确的目录adb
尽快出现在您的PATH
环境变量中,或者您可以尝试为 adb 添加一个明确指向正确路径的别名。 (我可能会将其附加到 的前面PATH
而不是使用别名,因为您运行的其他应用程序更有可能尊重PATH
而不是尊重别名。)
如果您发现 Genymotion 引用的 ADB 路径与 ADB 引用的路径不同,并且您决定通过修改来解决这个问题PATH
,那么您应该修改.bash_profile
主目录中的文件以在底部添加以下行(必要时修改):
export PATH="/path/to/adb-directory:$PATH"
之后,您可能需要运行source ~/.bash_profile && hash -r
并让更改生效。之后,如果一切正常,运行which adb
上述命令应该会显示所需的 ADB 路径。