Есть ли простой способ настроить эмулятор Android для доступа к локальной сети хост-машины?
Я хотел бы получить доступ к веб-сервису, предоставленному одной из машин в моей локальной сети, из эмулятора Android.
Если служба работала на том же компьютере, на котором запущен эмулятор (называемый хостом), я мог бы добавить перенаправление сети и получить доступ к 10.0.2.2 (хост-интерфейс хоста в эмуляторе) с правильным портом.
Однако он работает на другом компьютере в локальной сети. Я предполагаю, что я мог бы добавить еще одно перенаправление на хост дополнительно к предыдущему (придется сражаться с iptables, хотя...), но существует ли более простое решение?
Ответы
Ответ 1
Ну, это просто работает (TM).
В руководстве для эмулятора Android, которое я прочитал перед тестированием (я пытаюсь выполнить RTFM перед тем, как делать что-то), сказано:
Каждый экземпляр эмулятора работает за виртуальным сервисом маршрутизатора/брандмауэра, который изолирует его от сетевых интерфейсов и настроек сети разработчика и из Интернета. Эмулируемое устройство не может видеть вашу машину разработки или другие экземпляры эмулятора в сети. Вместо этого он видит только, что он подключен через Ethernet к маршрутизатору/брандмауэру.
Это заставило меня думать, что он не может получить доступ к моей локальной сети. Я ошибался, просто добавив IP-адрес сервера в свою локальную сеть, я смог получить доступ к нему из эмулятора.
Ответ 2
Как известно, эмулятор может получить доступ к хост-машине по IP 10.0.2.2, поэтому я попробовал переадресацию IP, но я не мог заставить его работать..: |
Я выполнил ссылку ниже для запроса пересылки с localhost (10.0.2.2 в случае эмулятора) на другой компьютер в локальной сети.
http://www.debuntu.org/how-to-redirecting-network-traffic-a-new-ip-using-iptables
Ответ 3
по состоянию на 2018-08 гг. кажется, что сертификат "это просто работает (TM)" был отозван
вот что мне нужно для доступа к серверу в моей локальной сети:
host ip (my pc): 192.168.15.102/24
server ip: 192.168.200.33/24
создайте правило переадресации портов в командной строке с повышенными правами на хосте с помощью netsh
netsh interface portproxy add v4tov4 listenport=80 connectport=80 connectaddress=192.168.200.33
запустите эмулятор мобильного устройства и перейдите к 10.0.2.2 (как указано в документации):
10.0.2.2 Специальный псевдоним интерфейса обратной связи вашего хоста (т.е. 127.0.0.1 на вашем компьютере разработки)
Ответ 4
Вы можете получить реальное устройство Android и подключить его к локальной сети (я сделал это).
Как вы подключаетесь к главной машине? через html? потому что, если ваше приложение требует жесткого подключения к машине, то это не очень хорошее решение для мобильного устройства.