ADB和Genymotion错误:" adb服务器已过期。杀戮......无法绑定&#t; tcp:5037' ADB服务器没有确认"

时间:2015-06-10 13:03:00

标签: android android-studio android-emulator adb genymotion

在启动genymotion模拟器后尝试从终​​端使用adb shell,我收到此错误:

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

我读了this answer on stackoverflow来运行此命令killall -9 adb所以我做了然后它说要更改genymotion设置以使用自定义Android SDK工具,如下所示:

enter image description here

也可以在上面的屏幕截图中看到,但我仍然收到相同的错误消息。

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

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

我甚至尝试过创建新的虚拟设备并使用它而没有任何成功。

3 个答案:

答案 0 :(得分:28)

如果您有1.0.31或更低的

,请将adb更新为1.0.32
GenericAttribute

答案 1 :(得分:21)

这些解决方案都不适合我。

解决我的错误的解决方案是添加缺少的/ Android / Sdk /工具& / Android / Sdk / platform-tools目录到我的Environment PATH变量,可以使用以下命令实现:

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

请务必在命令中插入您自己的用户名,将{username}替换为您的操作系统用户名。

这样做会指示您的命令行搜索您的Environmant的PATH变量以获取adb可执行文件的正确位置,如果没有设置此环境变量,您的系统将不知道在哪里查找正确的可执行文件。

答案 2 :(得分:5)

此问题的根本原因是您尝试运行不同版本的adb。 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. 使用任务管理器工具查找运行adb服务器的二进制路径,搜索“adb”。使用命令
  2. 检查其版本
      

    [adb服务器的路径] / adb版本

    输出如下:

    Android Debug Bridge version 1.0.35
    Revision 68de85bda98d-android
    

    “1.0.35”是版本号。

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

      adb version

      1. 比较版本号,必须匹配。
      2. 如果不匹配,您可以:

        • 只保留一个adb,删除其他adb。
        • 或者您可以忽略该错误。如果它总是显示,找出谁为你运行不同的adb工具并停止它。例如,一些手机助手 程序