无法通过 ADB genymotion 连接到模拟器

无法通过 ADB genymotion 连接到模拟器

我正在尝试连接到通过 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 中转到SettingsADB并选择您安装的 SDK。

答案3

当我尝试使用 Android SDK 平台工具 ADB 而不是 Genymotion 提供的版本连接到 Genymotion VM 时,我确实遇到过该错误消息;但是,我并没有尝试配置 Genymotion 以使用 Android SDK 提供的 ADB。

我会尝试使用 Genymotion 提供的版本进行连接。听起来 Genymotion 可能不尊重您设置的配置。

这是我观察到的问题:

Genymotion 无法连接错误的 ADB。

如该屏幕截图所示。当您尝试连接与 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,如下图所示:

上述步骤的示例显示了 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 路径。

相关内容