Связь между эмуляторами Android

Я хотел знать, возможно ли, что связь между двумя эмуляторами Android началась на двух разных машинах, объединенных в сеть.

Например, эмулятор A запускается на машине M1, а эмулятор B запускается на машине M2.

Могут ли A и B обмениваться сообщениями?

Если да, то какой IP-адрес мне использовать?

Большое спасибо, Дебора.


person Deborah    schedule 28.10.2010    source источник


Ответы (2)


Возможно, вы уже это знаете. Что касается android-sdk-tools_r7, по крайней мере должна быть возможность подключить два эмулятора друг к другу. Я не знаю, работает ли это между физическими машинами. Возможно, удастся настроить маскировку между двумя хостами для этой конкретной трансляции.

От Android коммит

Включить взаимосвязь эмуляторов

Этот патч добавляет к эмулятору опцию -shared-net-id, которая присоединяется к эмулятору в общей сети. Если указана эта опция, эмулятор запускается с дополнительным сетевым интерфейсом, привязанным к многоадресному сокету. Этот многоадресный сокет эмулирует сетевой концентратор, соединяя эмуляторы. Если параметр -shared-net-id не указан, ничего не меняется.

Чтобы подключить два эмулятора, используйте параметр командной строки -shared-net-id <number> при запуске эмулятора. Затем они будут напрямую делиться всем, что отправляется или читается с ip 10.1.2.<number> на эмуляторе.

Другой подход заключается в том, чтобы включить переадресацию портов между эмуляторами с помощью adb, а затем настроить маскировку для этих портов на сетевых машинах.

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

Отказ от ответственности: я не пробовал первый подход, а второй я использовал только для того, чтобы убедиться, что эмулятор может обойти неприятный корпоративный брандмауэр и HTTP-прокси, чтобы мы могли протестировать браузер Android. Хотя принцип должен быть здравым.

Обновление: нет, я много с этим играл и не нашел хороших решений. Я недостаточно хорошо разбираюсь в iptables, чтобы настроить действительный туннель таким образом, чтобы он работал на стороне сервера.

С уважением,
Микаэль

person Mikael Ohlson    schedule 28.10.2010
comment
Кроме того, я только что обнаружил, что использование wireshark для отладки настроек брандмауэра помогает. Много. :-) - person Mikael Ohlson; 28.10.2010

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

Вы можете использовать эмулятор или перенаправление порта ADB для отправки трафика в эмулятор, но, возможно, только локально исходящий трафик на петлевом интерфейсе машины разработки, а не внешний трафик. Если это действительно так, то самым простым, вероятно, будет написать или настроить переадресацию портов, которая прослушивает внешний интерфейс машины разработки и перенаправляет на порт, который перенаправляется в эмулятор.

person Chris Stratton    schedule 28.10.2010
comment
Привет Крис! Спасибо за ответ! Я уже использую этот подход, я ищу другой подход, если он существует :) - person Deborah; 29.10.2010
comment
Автономный демон переадресации, вероятно, будет намного проще, чем альтернативы перекомпиляции adb или самого эмулятора для прослушивания на внешнем интерфейсе ... Я полагаю, что другим вариантом будет запуск сборки Android x86 в виртуальном боксе или подождать и посмотреть если намеки официального эмулятора, движущегося в этом направлении, окажутся верными. Или используйте аппаратное устройство (beagle board?) вместо эмулятора. - person Chris Stratton; 29.10.2010