Как настроить ADB для разработки удаленных машин и локального развертывания устройств
Мой сценарий таков: я телеуправляюсь из дома и запишусь на свой рабочий компьютер через Windows Remote Desktop. Я использую Eclipse в качестве среды разработки для приложений Android на своем рабочем компьютере.
Используя ADB, я хотел бы иметь возможность развертывать приложения с моего рабочего компьютера на устройство в моей домашней сети, для сценариев, в которых эмулятор не выполняет справедливость приложения.
Я нашел этот пост, в котором обсуждается очень похожий сценарий, за исключением развертывания на эмуляторе, запущенного на локальном ПК, вместо развертывания на локальном устройстве:
http://www.41post.com/5003/programming/android-adb-remote-emulator-access
Я пытаюсь выполнить те же шаги, но выясню, как настроить таргетинг на локальное устройство в моей домашней сети WiFi и привязано к локальному домашнему ПК вместо локального эмулятора.
Прямо сейчас у меня есть удаленный ПК, настроенный на попытку подключения к моему публичному IP-адресу маршрутизатора на порту 5585, - но на моем маршрутизаторе какой IP-порт я переадресую это для подключения к локальному устройству?
В примере с использованием эмулятора они пересылаются на локальный адрес ПК, где работает эмулятор, и порт 5555, а adb не работает на локальном ПК. Я настроил свой маршрутизатор для пересылки на IP-адрес устройства с устройством на WiFi, а также с моим локальным IP-адресом ПК, на котором привязано устройство.
Однако в обоих сценариях, когда я пытаюсь использовать adb connect <routerIP>:5585
на моем удаленном ПК, это дает мне ошибку unable to connect to <routerIP>:5585:5585
. Я получаю тот же ответ при попытке переслать/прослушать другие порты. Я не получаю никаких ошибок безопасности в протоколе маршрутизатора, поэтому кажется, что переадресация портов работает.
Вопросы:
- Какой локальный номер IP/порта должен быть отправлен при настройке перенаправления портов в локальной сети для подключения к локальному устройству с помощью удаленного экземпляра adb?
- Должен ли я настраивать IP-адрес локального ПК, к которому привязано устройство, или IP-адрес локального устройства?
- Если я настроен на IP-адрес локального устройства, какой номер порта я должен переслать?
- Нужен ли мне adb на моем локальном ПК?
Ответы
Ответ 1
У меня была аналогичная ситуация. Я работаю на удаленном рабочем столе для разработки, но мое устройство Android подключено к моему локальному ноутбуку. Я хотел иметь возможность использовать adb и плагин Android в eclipse на удаленном рабочем столе и подключаться к устройству, подключенному к моему ноутбуку. После поиска в Интернете и не найдя ничего, что действительно помогло, я решил написать порт-форвардер, который бы сделал трюк. Вы можете найти здесь здесь. Я надеюсь, что это будет полезно и для других людей.
Ответ 2
Начиная с Android 4.3 вы можете:
- Сделать сервер
adb
прослушиванием всех интерфейсов. У вас есть два варианта:
- Сделайте gListen = 1 и перекомпилируйте
adb
(я скомпилировал его на компьютере Linux-x64 для вас и поместил здесь)
- Запустите сервер adb с параметром
-a
: adb -a -P 5037 fork-server server&
- Используйте
adb
на удаленном компьютере с дополнительным параметром, например. adb -H <remote_host> shell
Ответ 3
Вы можете решить проблему путем перенаправления портов.
- Загрузите приложение Secure Shell из магазина приложений Chrome.
- Подключение к вашему устройству (пошаговая настройка)
- В этом случае отключите adb-сервер: adb kill-server
- Создайте новое соединение для переадресации портов (такое же, как и обычное соединение, но установите для параметра SSH Arguments следующее: -N -R 5037: localhost: 5037)
- На вашем ноутбуке откройте терминал и включите сервер adb: adb start-server
Ответ 4
Моя ситуация требовалась с использованием виртуальной машины, находящейся в другой сети, но которая была включена в (Azure VM). VM и мой локальный ноутбук работают под управлением Windows 10. Сначала мне пришлось установить USB Redirector RDP Edition на моем локальном компьютере (стоит 80 долларов США, но могут быть бесплатные альтернативы), а затем установить драйвер Google Android USB на виртуальной машине и Универсальный драйвер Adb на виртуальной машине. Теперь я могу загрузить приложение Android Studio в Android Studio на виртуальной машине, подключить устройство Android на своем ноутбуке и отладить приложение на устройстве.
Ответ 5
Возможно, существует более простое решение, обеспечивающее, чтобы устройство, локальная и удаленная машины принадлежали к одной и той же сети.
Скажем, у вашего устройства есть определенный IP-адрес по сети, и предположим, что вы решили использовать предпочтительный PORT: ну, вы можете сделать следующие шаги.
На машине, где подключено устройство, выполните следующие действия:
adb devices
adb tcpip PORT
На удаленном компьютере вам необходимо деактивировать "Discover USB devices", "Discover network target" и "Port forwarding", а затем запустить:
adb connect IP:PORT
и вы готовы отлаживать удаленный компьютер.
Надеюсь, это поможет кому-то...
Привет