Есть ли простой способ настроить эмулятор 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? потому что, если ваше приложение требует жесткого подключения к машине, то это не очень хорошее решение для мобильного устройства.