Ошибка ADB и Genymotion: "сервер adb устарел. Kill... не может связывать tcp: 5037" Сервер ADB не ACK "

Попытка использовать adb shell из терминала после запуска эмулятора genymotion, и я получаю эту ошибку:

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

Я прочитал в qaru.site/info/12690/... для запуска этой команды killall -9 adb, поэтому я сказал, и он говорит, чтобы изменить настройки genymotion, чтобы использовать пользовательские инструменты Android SDK в качестве следующее:

enter image description here

Также сделал это, как вы можете видеть на скриншоте выше, но я все равно продолжаю получать одно и то же сообщение об ошибке.

В моих журналах ADB для моего Android-сообщества при каждом запуске adb shell:

появляется следующее сообщение:
 DeviceMonitor: Adb connection Error:EOF
 DeviceMonitor: Connection attempts: 1

Я даже попытался создать новое виртуальное устройство и использовать его без каких-либо успехов.

Ответ 1

обновите adb до 1.0.32, если у вас 1.0.31 или ниже

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

Ответ 2

Ни один из этих решений не работал у меня вообще.

Решение, которое решило мою ошибку, заключалось в том, чтобы добавить в мою переменную среды PATH как пропавшие /Android/Sdk/tools, так и/Android/Sdk/платформы инструменты инструментов, это может быть достигнуто с помощью следующей команды:

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

Не забудьте интерполировать свое собственное имя пользователя в команду, заменив {username} на имя пользователя вашей операционной системы.

Это приведет к тому, что ваша командная строка будет искать вашу переменную среды Environmant PATH для правильного расположения исполняемого файла adb без этой переменной окружения. Ваша система не знает, где искать правильный исполняемый файл.

Ответ 3

Основная причина этой проблемы заключается в том, что вы пытаетесь запустить adbs разных версий. ПК (хост) стороны adb состоит из двух частей: adb и adb server.

adb < ---- > adb server < -------- 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 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.

  • Найдите двоичный путь запуска сервера adb с помощью инструмента управления задачами, выполните поиск "adb". проверьте его версию с помощью команды

[путь к серверу adb]/версия adb

Вывод выглядит следующим образом:

Android Debug Bridge version 1.0.35
Revision 68de85bda98d-android

"1.0.35" - номер версии.

  1. проверьте версию adb, которая вызывает вашу проблему. просто введите

версия adb

  1. сравнить номера версий, которые должны соответствовать.

если они не совпадают, вы можете:

  • просто сохраните только один adb, удалите другие.
  • или вы можете проигнорировать ошибку. если он всегда показывает, узнайте, кто запустил для вас другой инструмент adb и остановил его. Например, некоторые помощники по телефону Программа.