ADB: отсутствующий порт в спецификации - PullRequest
25 голосов
/ 14 марта 2019

Я недавно обновился до Android SDK Platform-Tools версии 28.0.2.Информация о версии:

$ adb version
Android Debug Bridge version 1.0.40
Version 28.0.2-5303910

При использовании команды adb connect теперь я получаю следующую ошибку:

$ adb connect 192.168.1.20
missing port in specification: tcp:192.168.1.20

ADB, ранее подключенный к устройствам, использующим TCP-порт 5555 по умолчанию.Я все еще могу подключиться к своему устройству, указав этот номер порта:

$ adb connect 192.168.1.20:5555
connected to 192.168.1.20:5555

Однако для меня это незначительное неудобство, так как я привык вводить только IP-адрес.Есть ли способ сообщить этой версии ADB об использовании TCP-порта 5555 по умолчанию?

Ответы [ 6 ]

16 голосов
/ 14 марта 2019

Это может показаться ошибкой в ​​АБР, появившейся в декабре или январе. Я считаю, что это связано с недавними изменениями этого else оператора в socket_spec.cpp .

} else {
    std::string addr(spec.substr(4));
    port_value = -1;

    // FIXME: ParseNetAddress rejects port 0. This currently doesn't hurt, because listening
    //        on an address that isn't 'localhost' is unsupported.
    if (!android::base::ParseNetAddress(addr, &hostname_value, &port_value, serial, error)) {
        return false;
    }

    if (port_value == -1) {
        *error = "missing port in specification: ";
        *error += spec;
        return false;
    }
}

Если значение порта не указано, переменная port_value инициализируется значением -1 и не изменяется. Это значение также не изменяется android::base::ParseNetAddress. Если проверка ParseNetAddress пройдена, то мы всегда попадем в ловушку ошибки сразу после нее. Я сообщил об ошибке в Google.

7 голосов
/ 05 мая 2019

Я могу подключить свой телефон Android, добавив номер порта в месте постфикса.

Например,

$ adb kill-server

$ adb connect 192.168.1.20:5555

Непосредственно он не мог подключиться, он выдавал мне вышеуказанную ошибку.

ПРИМЕЧАНИЕ: Номер порта является обязательным для применения, возможно, номер вашего порта в настоящее время другой, поэтому, пожалуйста, найдите его, а затем повторите попытку подключения.

5 голосов
/ 23 марта 2019
$ adb kill-server
$ adb connect 192.168.1.20

Просто убейте сервер adb и подключитесь нормально. Порт по умолчанию (5555) восстанавливается при перезапуске сервера.

1 голос
/ 10 июля 2019

Настройка порта для устройства Android решит проблему.

Вот как:

  1. Подключите устройство Android с USB к компьютеру (Linux, MacO и т. Д.) С установленным adb.
  2. Выполнить adb tcpip <port_number>. Это переведет устройство в режим TCP с портом, хотя в данный момент устройство может не использовать Ethernet или WiFi. Это сделает port_value не равным -1 или неопределенным.
  3. отключите устройство Android от компьютера через USB.
  4. adb connect <IP address>:<port number> Это должно подключить устройство. Устройство должно отображаться в результате adb devices.

Это сработало для меня, когда я «adb over Ethernet» и «adb over wifi» с моим Pixel 3 XL.

1 голос
/ 31 мая 2019

Есть еще один обходной путь, с кредитом этого неизвестного в ветке выпуска Google. Создайте пользовательский псевдоним, который автоматически добавляет номер порта по умолчанию к IP-адресу.

Для Linux и MacOS, в ~/.bashrc или ~/.bash_aliases:

function adbc() {
   adb connect $1:5555
}

Затем подключитесь с помощью команды

$ adbc 192.168.1.20

Для пользователей Windows:

Поместите это в adbc.bat в любом месте вашего PATH

@echo off
adb connect %1:5555

Затем подключитесь с помощью команды

> adbc 192.168.1.20
1 голос
/ 29 мая 2019

Просто отметили это на устройстве AndroidThings,

пришлось поменять

 adb connect Android.local

с

 adb connect Android.local:5555
...