ADB和Genymotion错误:“adb服务器已过期。 查杀…不能绑定'tcp:5037'ADB服务器没有确认“

启动genymotion模拟器后,试图从terminal使用adb shell ,我得到这个错误:

 adb server is out of date. killing... cannot bind 'tcp:5037' ADB server didn't ACK * failed to start daemon * error: 

我读了这个答案在stackoverflow运行这个命令killall -9 adb所以我做了,然后它说,要改变genymotion设置使用自定义Android SDK工具如下:

在这里输入图像说明

也做了这一点,你可以看到在上面的截图,但我仍然不断收到相同的错误信息。

每当我尝试运行adb shell时,我的android Studio ADB日志会提供以下消息:

  DeviceMonitor: Adb connection Error:EOF DeviceMonitor: Connection attempts: 1 

我什至试图创build一个新的虚拟设备,并没有任何成功使用它。

Solutions Collecting From Web of "ADB和Genymotion错误:“adb服务器已过期。 查杀…不能绑定'tcp:5037'ADB服务器没有确认“"

如果你有1.0.31或更低版本,把adb更新到1.0.32

 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 

这两种解决scheme都不适合我。

解决了我的错误的解决scheme是将缺less的/ Android / Sdk / tools&Android / Sdk / platform-tools目录添加到我的Environment PATHvariables中,这可以通过以下命令来实现:

 export PATH=/home/{username}/Android/Sdk/tools:/home/{username}/Android/Sdk/platform-tools:$PATH 

请确保将您自己的用户名插入到命令中,将{用户名}replace为您的操作系统用户名。

这样做会引导您的命令行search您的Environmant的PATHvariables,以确定adb可执行文件的正确位置,如果没有设置此环境variables,系统将不知道在哪里查找正确的可执行文件。

这个问题的根本原因是您尝试运行不同版本的adbs。 PC(主机)端adb由两部分组成:adb和adb服务器。

adb <—-> adb服务器<——– USB ——-> adbd(设备)

adb和adb服务器实际上是相同的二进制文件,但是当您首次发出adb命令时,adb服务器正在后台运行。 之后,adb命令会在每次运行adb时联系哪个adb服务器,首先检查正在运行的adb服务器的版本。 如果版本不匹配,那么您将看到'adb服务器已过期。 杀……“。 这是唯一的原因。

 int adb_connect(const std::string& service, std::string* error) { // first query the adb server's version int fd = _adb_connect("host:version", error); ... if (version != ADB_SERVER_VERSION) { printf("adb server is out of date. killing...\n"); fd = _adb_connect("host:kill", error); adb_close(fd); /* XXX can we better detect its death? */ adb_sleep_ms(2000); goto start_server; } 

要解决这个问题,你只需要确保你不会运行不同版本的adb。

  1. 通过使用任务pipe理器工具查找运行adb服务器的二进制path,search“adb”。 使用命令检查其版本

[adb服务器path] / adb版本

这样的输出:

 Android Debug Bridge version 1.0.35 Revision 68de85bda98d-android 

“1.0.35”是版本号。

  1. 检查导致您的问题的adb的版本。 只需键入

adb版本

  1. 比较版本号,必须匹配。

如果他们不匹配,您可以:

  • 只保留一个adb,删除其他人。
  • 或者你可以忽略这个错误。 如果它总是显示,找出谁正在运行不同的adb工具,并停止它。 例如,一些电话助理程序。