Как я могу подключиться к Android с ADB через TCP?

Я пытаюсь отладить приложение на Motorola Droid , но у меня возникают некоторые трудности с подключением к устройству через USB. Мой сервер разработки представляет собой 64-разрядную виртуальную машину Windows 7, работающую в Hyper-V , и поэтому я не могу подключиться напрямую через USB в гостевой или хост-системе.

Я установил несколько разных решений USB-over-TCP, но, похоже, возникли проблемы с подключением, поскольку монитор ADB сообщает, что «devicemonitor неоднократно не запускал мониторинг». Есть ли способ подключиться напрямую с клиента на компьютере разработчика к демону на устройстве, используя сеть вместо USB-подключения или, возможно, другие жизнеспособные варианты?

843
задан 16.05.2020, 12:33

11 ответов

Если вы хотите легко подключить ваше устройство для запуска, отладки или развертывания приложений Android через WiFi, вы можете использовать разработанный мной плагин IntelliJ с открытым исходным кодом. Здесь это код, а здесь плагин готов к использованию.

Использование довольно просто. Здесь у вас есть GIF:

enter image description here

20
ответ дан 16.05.2020, 12:34
  • 1
    Вы can' t просто используют два BIGINTs, необходимо использовать два BIGINT UNSIGNEDs. При взятии FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF, например, разделение его в половине и преобразовывающий каждую сторону в ее целочисленное представление решило бы к двум значениям 18,446,744,073,709,551,615. Это - макс. значение неподписанного 64-разрядного целого числа. – Billy Jo 07.02.2020, 20:16

Я вообще не знаю, как подключить устройство без какого-либо USB-подключения, но если вам удастся подключить его, возможно, на другом компьютере, вы можете переключить adbd в режим TCP, выполнив

adb tcpip <port>

из терминал и подключиться к устройству через Wi-Fi с любого ПК в сети с помощью:

adb connect <ip>:<port>

Возможно, также можно переключиться в режим TCP с терминала на устройстве.

29
ответ дан 16.05.2020, 12:34
  • 1
    на самом деле - если я делал этот I' d уезжают первый bigint как ПУСТОЙ УКАЗАТЕЛЬ для IPv4 или используют отдельное поле. Тем путем часть IPv4 появляется в наименее знаменательном слове. – Alnitak 07.02.2020, 20:15

Как сказал Брайан:

Согласно сообщению на xda-developers, вы можете включить ADB через WiFi с устройства с помощью команд

setprop service.adb.tcp. порт 5555

stop adbd

start adbd

И вы можете отключить его и вернуть ADB для прослушивания по USB с помощью

setprop service.adb.tcp. порт -1

stop adbd

start adbd

Если у вас уже есть USB-доступ, переключиться на Wi-Fi еще проще. Из командной строки на компьютере, к которому подключено устройство через USB, введите команды

adb tcpip 5555

adb connect 192.168.0.101:5555

Чтобы сообщить ADB демон возвращается к прослушиванию через USB

adb usb

В Android Market также есть несколько приложений, которые автоматизируют этот процесс.

Это работает. Вам просто нужно получить доступ к оболочке Android и ввести эти команды ...

На Маркете есть еще одно (более простое) решение: adbWireless, оно автоматически настроит ваш телефон.

Требуется рут! для обоих ...

11
ответ дан 16.05.2020, 12:36
  • 1
    @james: теперь IPv4 отобразился, адреса требуют :: диапазон ffff:/96 – NeDark 07.02.2020, 20:16
  • 2
    ... но только если телефон базирован. – android.weasel 16.05.2020, 12:36
  • 3
    Asus Transformer 301 - Работающий никакой корень требуется – Aiden Strydom 16.05.2020, 12:36
adb tcpip 5555

Странно, но у меня это работает, только если у меня подключен USB-кабель, тогда я могу отключить usb и пойти по нему со всем остальным adb.

и то же самое при возврате к USB,

adb usb

будет работать, только если USB подключен.

Неважно, если я выпущу

setprop service.adb.tcp.port 5555

или

setprop service.adb.tcp.port -1

, то остановлюсь & amp; запустите adbd, мне все еще нужен USB-кабель или он не работает.

Так что, если бы мой ADB через usb не работал, держу пари, я бы тоже не смог включить ADB через WiFi.

9
ответ дан 16.05.2020, 12:36
  • 1
    В проекте это I' работаю теперь, мы используем десятичное число (39,0) подход, и это работает хорошо за редким исключением. Несколько раз необходимо БРОСИТЬ значения для сравнений. т.е. Где ipv6 = БРОСОК (' строка, содержащая числовой ipv6' десятичное число AS (39,0)). Особенно на языках, которые не поддерживают числовые типы на 128 битов, и привязка параметров mysql библиотеки не достаточно умна. – Diego 07.02.2020, 20:16

С компьютера на некорневом устройстве

(Обратите внимание, что это также можно сделать с помощью рутированного устройства, но вы можете использовать оболочку на рутированном устройстве, которое не требует подключения USB )

Во-первых, откройте командную строку (CMD). Если вы используете Android Studio или IntelliJ, там есть консоль, которую вы можете использовать.

Если к пути добавлен adb, вы можете пропустить часть cd.


Если возможно, откройте местоположение SDK, щелкните правой кнопкой мыши и нажмите «Запустить командную строку здесь». Не у всех есть эта опция, поэтому вы должны также выполнять следующие команды:

Windows: изменить диск (если применимо)

D: 

И получить доступ к инструментам SDK и платформы , Замените этот путь на местоположение вашего SDK:

cd /sdk/path/here/platform-tools

Теперь у вас есть доступ к мосту отладки Android.


Когда устройство подключено к компьютеру, выполните:

adb tcpip <port> 
adb connect <ip>:<port>

Где <port> - это порт, к которому вы хотите подключиться (по умолчанию 5555), а <ip> - это порт. IP-адрес устройства, к которому вы хотите подключиться.

Пожалуйста, обратите внимание: 5555 является портом по умолчанию, и просто запись IP-адреса соединяет его. Если вы используете собственный порт, вы можете хотя бы немного улучшить безопасность. Отладкой USB через Wi-Fi можно злоупотреблять, но только если устройство подключено к компьютеру, который хочет злоупотребить устройством. Использование порта не по умолчанию, по крайней мере, затрудняет подключение.

Если вы используете нестандартный порт, обязательно добавьте его после IP. Запись без порта соединяется с 5555, и если вы не использовали его, соединение не будет установлено.

Вы можете найти IP-адрес устройства двумя способами:

  • В зависимости от вашего устройства точные имена могут отличаться. Откройте настройки и перейдите к Об устройстве -> Статус -> IP-адрес

  • Используйте ADB для получения IP-адреса.

Из консоли выполните:

adb shell ip -f inet addr show wlan0

. После завершения подключения вы можете отключить устройство от компьютера, выполнив:

adb disconnect <ip>:<port>

Или нет IP для отключения всех устройств. Если вы использовали пользовательский порт, вы должны указать, какой порт следует отключить от . По умолчанию здесь также 5555.

Чтобы отключить порт (если это то, что вы хотите сделать), выполните следующую команду с подключенным устройством:

adb usb

Или вы можете перезапустить устройство, чтобы удалить соединение tcpip

С компьютера на рутованном устройстве

Во-первых, вам нужен доступ к оболочке. Вы либо подключаете устройство с помощью USB-кабеля и используете adb shell, либо загружаете приложение из Google Play, FDroid или другого источника.

Затем вы делаете:

su
setprop service.adb.tcp.port <port>
stop adbd
start adbd

И для подключения устройства вы делаете, как в некорневой версии, выполняя adb connect <ip>:<port>.

И если вы хотите отключить порт и вернуться к прослушиванию через USB:

setprop service.adb.tcp.port -1
stop adbd
start adbd

Вы также можете использовать плагин для Android Studio, чтобы сделать это за вас (не помню названия прямо сейчас), а для пользователей с правами root также есть возможность загрузить приложение Android для настройки телефонного соединения (вероятно, все еще требуется adb connect).

Некоторые телефоны имеют настройку в параметрах разработчика (это относится к некоторым телефонам без рутирования, хотя, возможно, и к некоторым рутованным телефонам), что позволяет переключать ADB через Wi-Fi с самого устройства без рута или компьютера соединение, чтобы начать это. Хотя есть несколько телефонов, которые имеют это

32
ответ дан 16.05.2020, 12:37
  • 1
    Я wouldn' t. Адреса IPv6 часто показывают в сокращенном формате, и это также было бы довольно неэффективно для поиска таблицы любой адрес that' s в конкретной подсети, особенно если подсеть охватывает границу откусывания. – Alnitak 07.02.2020, 20:16

Я все заработал. Не использовал USB-кабель.

  • Приложение ADB Wireless.
  • Запустите его. Это установит IP и порт; Затем в дос

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"
    

подключен.

1
ответ дан 16.05.2020, 12:38
  • 1
    Что делает Вы подразумеваете под " (обычно интервал) "? – Keith Thompson 08.12.2019, 02:37

Если вы хотите сделать это одним нажатием кнопки, то:

  1. В Android Studio -> Настройки / Предпочтения -> Плагины -> Просмотр репозиториев
  2. Поиск ' ADB wifi '
  3. Установка и перезапуск android studio
  4. Подключите ваше устройство (с включенной отладкой USB) к компьютеру с USB (вам нужно будет делать это только один раз за сеанс)
  5. Инструменты -> Android -> ADB WIFI -> ADB USB К WIFI (Или используйте указанную комбинацию клавиш. Для MacOS: ctrl + shift + w)

Примечание: Если это не сработало:

  1. Возможно, ваш брандмауэр Wi-Fi-маршрутизатора блокирует соединение.
  2. Возможно, ABD не установлен на вашем компьютере.
1
ответ дан 16.05.2020, 12:39
  • 1
    " неинициализированные переменные не имеют известного значения " неинициализированная переменная не имеет значения во всем . – curiousguy 08.12.2019, 02:38

Я нашел удобный метод, которым хотел бы поделиться.

Для Windows

Один раз доступ к USB

Нет необходимости в руте

Подключите телефон и компьютер к точке доступа или запустите переносную точку доступа с телефона и подключите к ней свой компьютер.

Получите IP-адрес вашего телефона, как предписано Брайаном (не нужно, если вы делаете горячую точку с телефона)

adb shell ip -f inet addr show wlan0

Откройте Блокнот

Напишите эти

@echo off
cd C:\android\android-sdk\platform-tools
adb tcpip 5555
adb connect 192.168.43.1:5555

Измените указанную выше папку, где ваш компьютер содержит файл abd.exe

Измените ip на ваш ip телефона.

Примечание : IP-адрес, указанный выше, является базовым IP-адресом устройства Android, когда оно создает точку доступа. Если вы подключаетесь к сети Wi-Fi и IP-адрес вашего устройства постоянно меняется при каждом подключении к точке доступа, вы можете сделать его статическим, настроив его в настройках Wi-Fi. Google это.

Теперь сохраните файл как ABD_Connect.bat (пакетный файл MS-DOS).

Сохраните его где-нибудь и отошлите ярлык на рабочий стол или кнопку «Пуск».

Подключитесь через USB один раз и попробуйте запустить какое-нибудь приложение. После этого, когда вы захотите подключиться без проводов, дважды щелкните по ярлыку.

Примечание : Иногда вам нужно открывать ярлык каждый раз, когда вы отлаживаете приложение. Так что создание сочетания клавиш для ярлыка на рабочем столе будет более удобным. Я сделал комбинацию клавиш, как Ctrl+Alt+S. Поэтому всякий раз, когда я хочу отладить, я нажимаю Shift+F9 и Ctrl+Alt+S

Примечание : если вы обнаружите ошибку device = null в окне cmd, проверьте свой IP, возможно, он имеет изменено.

1
ответ дан 16.05.2020, 12:40
  • 1
    I' m не верный that' s обязательно верный. Что относительно " если (вход == 9) {международное нечто [1000000000]; нечто [0] =1;} " Это могло вызвать неопределенное поведение независимо от значения ' input'. – supercat 08.12.2019, 02:39

Это действительно просто, если ваш телефон рутирован.

Загрузите эмулятор терминала из Google Play (есть много бесплатных). Убедитесь, что ваше устройство Android подключено к Wi-Fi и получите IP-адрес Wi-Fi . Откройте программу терминала и введите:

su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

Теперь перейдите к своему компьютеру (при условии, что вы используете Windows) и создайте ярлык на рабочем столе для «cmd.exe» (без кавычек).

Щелкните правой кнопкой мыши по ярлыку cmd и выберите "Run as Administrator"

Перейдите в папку android-sdk-windows\tools

Тип:

adb connect ***wifi.ip.address***:5555

(example: adb connect 192.168.0.105:5555)

Теперь adb должен сказать, что вы подключены.

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

130
ответ дан 16.05.2020, 12:47
  • 1
    Стоп, я никогда не знал это. Таким образом, как int main() отличающиеся от int main(...)? – Mehrdad 08.12.2019, 02:37
  • 2
    ПРЕЖДЕ " adb tcpip 5555" ДЕЛАЮТ " adb kill-server". ПОСЛЕ " adb соединяются 192.168.0.101:5555" ДЕЛАЮТ " adb devices" ИЛИ " adb shell" (подключение doesn' t запускают оболочку). – samis 16.05.2020, 12:47
  • 3
    Этот ответ был лучше для меня, потому что он объяснил это, какая часть должна быть выполнена на устройстве и который на компьютере. – Eduardo 16.05.2020, 12:48

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

Шаг 1:
Вы должны включить опции разработчика в своем телефоне Android.
Вы можете включить опции разработчика, используя этот способ.
• Откройте «Настройки»> «О программе»> «Информация о программном обеспечении»> «Еще».
• Затем нажмите «Номер сборки» семь раз, чтобы включить параметры разработчика.
• Вернитесь в меню «Настройки», и теперь вы сможете увидеть «Опции разработчика» там.
• Коснитесь его и включите USB-отладку из меню на следующем экране.

Шаг 2:

Откройте cmd и введите adb.
если вы обнаружите, что adb является недопустимой командой, вам нужно добавить путь к переменной среды.

• Сначала перейдите к папке с установленным SDK
Следуйте по этому пути, и этот путь только для примера. D: \ программное обеспечение \ Development \ Andoird \ SDK \ SDK \ платформенные инструменты \; D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;
• Теперь поиск в расширенной настройке системы Windows

enter image description here

Откройте переменную окружения.

enter image description here

, затем откройте путь и вставьте следующий путь, это пример.
Ваш путь SDK отличается от моего, пожалуйста, используйте ваш. D: \ softwares \ Development \ Andoird \ SDK \ sdk \ platform-tools \;
D: \ softwares \ Development \ Andoird \ SDK \ sdk \ tools;

] enter image description here

Шаг 3:

Откройте cmd и введите adb. если вы по-прежнему видите, что команда adb является недопустимой, значит, ваш путь не установлен должным образом, выполните указанные выше шаги.

enter image description here

Теперь вы можете подключить ваш телефон к ПК.

Откройте cmd и введите adb devices, и вы увидите свое устройство. Найдите свой IP-адрес телефона.

enter image description here

Тип: - adb tcpip 5555

enter image description here

] Получить IP-адрес вашего телефона

adb shell netcfg

Теперь,

adb connect "IP address of your phone"

Теперь запустите ваш проект Android и, если вы не видите свое устройство, введите снова adb connect IP address вашего телефона

enter image description here

enter image description here

Для пользователей Linux и MAC :

Шаг 1: откройте терминал и установите adb, используя

sudo apt-get install android-tools-adb android-tools-fastboot

Подключите телефон через USB кабель к ПК. Введите следующую команду в терминале

adb tcpip 5555

Используя adb, подключите свой IP-адрес телефона Android.

Уберите свой телефон.

41
ответ дан 16.05.2020, 12:49
  • 1
    Это - просто я, или это кажется противоречием для высказывания его UB, только если пользователь входит 0. Если пользователь вошел 0, " оскорбление code" wouldn' t быть работал, и " условия для UB являются not' t met" – Nick Rolando 08.12.2019, 02:38

Мне нужно было , чтобы USB и TCPIP работали для ADB (не спрашивайте), поэтому я сделал следующее (используя указания, которые другие отправили от xda-developers)

Использование adb shell:

su
#Set the port number for adbd
setprop service.adb.tcp.port 5555

#Run the adbd daemon *again* instead of doing stop/start, so there
#are two instances of adbd running.
adbd &

#Set the port back to USB, so the next time ADB is started it's
#on USB again.
setprop service.adb.tcp.port -1

exit
33
ответ дан 16.05.2020, 12:51
  • 1
    Окончательное решение принято: 2xBIGINT, если второй bigint является ПУСТЫМ, то это означает IPv4 – azerole 07.02.2020, 20:15
  • 2
    На моем gnex, it' s /sbin/adbd. Это может варьироваться по телефону. Конечно, Вы должны быть базированы... Если you' ре не базировалось, Вы won' t быть в состоянии получить доступ к/sbin. – transistor1 16.05.2020, 12:52
  • 3
    Doesn' t работа: adbd, не найденный. adbd обычно запускается через запуск adbd. Но возможно there' s сценарий/исполняемый файл в некоторой папке? – KrisWebDev 16.05.2020, 12:52

Теги

Похожие вопросы