Эмулятор предоставляет универсальные сетевые возможности, которые можно использовать для настройки сложных сред моделирования и тестирования вашего приложения. На этой странице представлена архитектура и возможности сети эмулятора.
Сетевое адресное пространство
Каждый экземпляр эмулятора работает за виртуальным маршрутизатором или брандмауэром, который изолирует его от сетевых интерфейсов и настроек вашей машины разработки, а также от Интернета. Эмулируемое устройство не может обнаружить вашу машину разработки или другие экземпляры эмулятора в сети. Оно определяет только своё подключение к маршрутизатору или брандмауэру через Ethernet.
Виртуальный маршрутизатор для каждого экземпляра управляет сетевым адресным пространством 10.0.2/24. Все адреса, управляемые маршрутизатором, имеют вид xx , где xx — число. Адреса в этом пространстве предварительно выделяются эмулятором или маршрутизатором следующим образом:
Сетевой адрес | Описание |
---|---|
10.0.2.1 | Адрес маршрутизатора или шлюза |
10.0.2.2 | Специальный псевдоним для вашего петлевого интерфейса хоста (127.0.0.1 на вашей машине разработки) |
10.0.2.3 | Первый DNS-сервер |
10.0.2.4 / 10.0.2.5 / 10.0.2.6 | Дополнительные второй, третий и четвертый DNS-серверы |
10.0.2.15 | Эмулируемая сеть устройства при подключении через Ethernet |
10.0.2.16 | Эмулируемая сеть устройства при подключении по Wi-Fi |
127.0.0.1 | Интерфейс обратной связи эмулируемого устройства |
Все запущенные экземпляры эмулятора используют одни и те же адреса. Это означает, что если на вашем компьютере одновременно запущены два экземпляра, у каждого будет свой маршрутизатор, за которым будет расположен IP-адрес 10.0.2.15. Экземпляры изолированы маршрутизатором и не могут обнаружить друг друга в одной сети. Сведения о том, как настроить взаимодействие экземпляров эмуляторов по протоколу TCP/UDP, см. в разделе о взаимодействии экземпляров эмуляторов .
Адрес 127.0.0.1 на вашей машине разработки соответствует петлевому интерфейсу эмулятора. Для доступа к службам, работающим на петлевом интерфейсе вашей машины разработки, используйте специальный адрес 10.0.2.2.
Предварительно выделенные адреса эмулируемого устройства специфичны для эмулятора Android и, скорее всего, будут существенно отличаться на реальных устройствах (которые, скорее всего, также будут преобразованы в сетевые адреса, особенно за маршрутизатором или брандмауэром).
Ограничения локальной сети
Приложения Android, работающие на эмуляторе, могут подключаться к сети, доступной на вашей рабочей станции. Однако приложения подключаются через эмулятор, а не напрямую к оборудованию, и эмулятор работает на вашей рабочей станции как обычное приложение. Это может привести к некоторым ограничениям:
- Связь с эмулируемым устройством может быть заблокирована программой-брэндмауэром, работающей на вашем компьютере.
- Связь с эмулируемым устройством может быть заблокирована другим (физическим) брандмауэром или маршрутизатором, к которому подключен ваш компьютер.
Виртуальный маршрутизатор эмулятора должен иметь возможность обрабатывать все исходящие TCP- и UDP-соединения и сообщения от имени эмулируемого устройства, если сетевая среда вашей машины разработки это позволяет. Встроенных ограничений на номера портов или диапазоны нет, есть только ограничения, накладываемые вашей операционной системой и сетью.
В зависимости от среды эмулятор может не поддерживать другие протоколы (например, ICMP, используемый для ping). В настоящее время эмулятор не поддерживает IGMP и многоадресную рассылку.
Использовать сетевое перенаправление
Для взаимодействия с экземпляром эмулятора, находящимся за его виртуальным маршрутизатором, настройте перенаправление сети на виртуальном маршрутизаторе. Клиенты смогут подключаться к указанному гостевому порту маршрутизатора, а маршрутизатор будет направлять трафик к этому порту и с него на хост-порт эмулируемого устройства.
Чтобы настроить сетевое перенаправление, создайте сопоставление портов и адресов хоста и гостевой машины на экземпляре эмулятора. Существует два способа настроить сетевое перенаправление: с помощью команд консоли эмулятора и с помощью инструмента Android Debug Bridge ( adb
), как описано в следующих разделах.
Настроить перенаправление через консоль эмулятора
Каждый экземпляр эмулятора предоставляет консоль управления, к которой можно подключиться и отправлять команды, специфичные для этого экземпляра. Используйте команду redir
console для настройки перенаправления, необходимого для экземпляра эмулятора.
Сначала определите номер консольного порта для целевого экземпляра эмулятора. Например, номер консольного порта для первого запущенного экземпляра эмулятора — 5554. Затем подключитесь к консоли целевого экземпляра эмулятора, указав номер его консольного порта, следующим образом:
telnet localhost 5554
После подключения необходимо пройти аутентификацию, прежде чем можно будет настроить перенаправление. Подробнее см. в разделе «Запуск и остановка сеанса консоли» . После аутентификации используйте команду redir
для настройки перенаправления.
Чтобы добавить перенаправление, используйте:
redir add <protocol>:<host-port>:<guest-port>
Где <protocol>
— это либо tcp
, либо udp
, а <host-port>
и <guest-port>
задают сопоставление между вашей машиной и эмулируемой системой.
Например, следующая команда устанавливает перенаправление, которое обрабатывает все входящие TCP-подключения к вашему хост-компьютеру (компьютеру разработки) по адресу 127.0.0.1:5000 и передает их в эмулируемую систему по адресу 10.0.2.15:6000:
redir add tcp:5000:6000
Чтобы удалить перенаправление, используйте команду redir del
. Чтобы вывести список всех перенаправлений для конкретного экземпляра, используйте redir list
. Подробнее об этих и других консольных командах см. в разделе Консольные команды эмулятора отправки .
Обратите внимание, что номера портов ограничены вашей локальной средой. Обычно это означает, что вы не сможете использовать номера портов хоста ниже 1024 без специальных прав администратора. Кроме того, вы не сможете настроить перенаправление для порта хоста, который уже используется другим процессом на вашем компьютере. В этом случае redir
выдаёт соответствующее сообщение об ошибке.
Настроить перенаправление через adb
Инструмент Android Debug Bridge ( adb
) обеспечивает переадресацию портов — альтернативный способ настройки сетевого перенаправления. Подробнее см. в разделе «Настройка переадресации портов» в документации adb
.
Обратите внимание, что в настоящее время adb
не предлагает способа удаления перенаправления, кроме остановки сервера adb
.
Настройте параметры DNS эмулятора
При запуске эмулятор считывает список DNS-серверов, используемых вашей системой. Затем он сохраняет IP-адреса до четырёх серверов из этого списка и при необходимости создаёт для них псевдонимы на эмулируемых адресах 10.0.2.3, 10.0.2.4, 10.0.2.5 и 10.0.2.6.
В Linux и macOS эмулятор получает адреса DNS-серверов, анализируя файл /etc/resolv.conf
. В Windows эмулятор получает адреса, вызывая API GetNetworkParams()
. Обратите внимание, что это обычно означает, что эмулятор игнорирует содержимое файла hosts ( /etc/hosts
в Linux/macOS, %WINDOWS%/system32/HOSTS
в Windows).
При запуске эмулятора из командной строки вы можете использовать опцию -dns-server <serverList>
, чтобы вручную указать адреса используемых DNS-серверов, где <serverList>
— это список имён серверов или IP-адресов, разделённый запятыми. Эта опция может оказаться полезной, если в эмулируемой сети возникнут проблемы с разрешением DNS (например, появится сообщение «Ошибка неизвестного хоста» при использовании веб-браузера).
Используйте эмулятор с прокси
Во многих корпоративных сетях сетевые администраторы запрещают прямые подключения к интернету. Вместо этого интернет-соединения должны проходить через специальный прокси-сервер. Для доступа к интернету в сети с требованием прокси-сервера эмулятору необходимо знать о наличии прокси-сервера и о необходимости подключения к нему.
Из-за особенностей протокола HTTP прямое подключение к веб-серверу и подключение через прокси-сервер приводят к разным GET-запросам. Эмулятор прозрачно переписывает GET-запросы от виртуального устройства перед обращением к прокси-серверу, чтобы всё работало.
Если вашему эмулятору необходимо получать доступ к Интернету через прокси-сервер, вы можете настроить собственный HTTP-прокси.
При использовании эмулятора в Android Studio вы можете настроить прокси-сервер в меню Android Studio ( Settings > Appearance & Behavior > System Settings > HTTP Proxy
). Подробнее см. в разделе «Настройка прокси-сервера Android Studio» в документации Android Studio
.
При использовании эмулятора автономно ( вне Android Studio ) вы можете настроить прокси-сервер на экране расширенных элементов управления эмулятора:
- Открыв эмулятор, нажмите «Ещё».
.
- Нажмите «Настройки» и «Прокси» (доступно только в том случае, если эмулятор не был запущен из Android Studio).
- Определите настройки HTTP-прокси.

Альтернативно, вы можете настроить прокси-сервер из командной строки с помощью параметра -http-proxy <proxy>
при запуске эмулятора. В этом случае укажите информацию о прокси-сервере в <proxy>
в одном из следующих форматов:
http://<machineName>:<port>
или
http://<username>:<password>@<machineName>:<port>
Опция -http-proxy
заставляет эмулятор использовать указанный HTTP- или HTTPS-прокси для всех исходящих TCP-подключений. Перенаправление для UDP не поддерживается.
В качестве альтернативы вы можете определить переменную окружения http_proxy
со значением, которое вы хотите использовать для <proxy>
. В этом случае вам не нужно указывать значение <proxy>
в команде -http-proxy
— эмулятор проверяет значение переменной окружения http_proxy
при запуске и автоматически использует его, если оно определено.
Для диагностики проблем с подключением через прокси-сервер можно использовать опцию -debug-proxy
.
Экземпляры эмулятора межсоединений
Чтобы один экземпляр эмулятора мог взаимодействовать с другим, настройте сетевое перенаправление, как описано ниже.
Предположим, что ваша среда представлена следующим образом:
- А — ваша машина для разработки.
- B — ваш первый экземпляр эмулятора, работающий на A.
- C — ваш второй экземпляр эмулятора, также работающий на A.
Если вы хотите запустить сервер на B, к которому будет подключаться C, настройте его следующим образом:
- Настройте сервер на B, прослушивающий 10.0.2.15:<serverPort>.
- На консоли B настройте перенаправление с A:localhost:<localPort> на B:10.0.2.15:<serverPort>.
- На компьютере C подключите клиента к порту 10.0.2.2:<localPort>.
Например, если вы хотите запустить HTTP-сервер, выберите <serverPort>
как 80 и <localPort>
как 8080:
- B слушает 10.0.2.15:80.
- На консоли B выполните
redir add tcp:8080:80.
- C подключается к 10.0.2.2:8080.
Отправить голосовой вызов или SMS на другой экземпляр эмулятора
Эмулятор автоматически перенаправляет голосовые вызовы и SMS-сообщения с одного экземпляра на другой. Для отправки голосового вызова или SMS используйте приложение для набора номера или SMS-сообщений на одном из эмуляторов соответственно.
Чтобы инициировать имитированный голосовой вызов на другой экземпляр эмулятора:
- Запустите приложение дозвона на исходном экземпляре эмулятора.
В качестве номера для набора введите номер консольного порта целевого экземпляра.
Номер порта консоли целевого экземпляра можно определить, проверив заголовок его окна, если он запущен в отдельном окне, но не в окне инструментов. Номер порта консоли отображается как «Android Emulator (<port>)».
Команда
adb devices
также выводит список запущенных виртуальных устройств и номера их консольных портов. Подробнее см. в разделе Запрос устройств .- Нажмите кнопку вызова. В целевом экземпляре эмулятора появится новый входящий вызов.
Чтобы отправить SMS-сообщение другому экземпляру эмулятора:
- Запустите приложение SMS, если оно доступно.
- Укажите номер консольного порта целевого экземпляра эмулятора в качестве адреса SMS.
- Введите текст сообщения.
- Отправьте сообщение. Сообщение будет доставлено целевому экземпляру эмулятора.
Вы также можете подключиться к консоли эмулятора для имитации входящего голосового вызова или SMS. Подробнее см. в разделах «Эмуляция телефонии» и «Эмуляция SMS» .