Подключение эмулятор Android на Mac из виртуальной машины Windows
Эмулятор Android предоставляет универсальные сетевые возможности, которые можно использовать для различных целей, включая подключение к эмулятору, работающему на Компьютере Mac, из виртуальной машины Windows. Это полезно при запуске Windows в Parallels на Компьютере Mac. В этом сценарии необходимо использовать эмулятор на Компьютере Mac, так как он не может работать в Parallels. Сведения об установке эмулятора Android на Mac см. в разделе "Установка".
Важно!
Адрес 127.0.0.1 на компьютере разработки соответствует интерфейсу обратного цикла эмулятора.
Существует два основных подхода для подключения к эмулятору Android на Mac из виртуальной машины Windows:
- Использование
nc
для переадресации пакетов. Дополнительные сведения см. в разделе "Использование nc" для переадресации пакетов. - Использование
ssh
перенаправления портов. Дополнительные сведения см. в разделе "Использование перенаправления портов ssh".
В обоих случаях мост отладки Android (ADB) используется для подключения к эмулятору. ADB — это средство командной строки, которое упаковано с пакетом средств платформы sdk для Android, которое позволяет взаимодействовать с устройством. Команда adb
упрощает различные действия устройства, включая подключение к устройствам. Дополнительные сведения см. в разделе "adb
Мост отладки Android" (adb) на developer.android.com.
Использование nc для переадресации пакетов
Чтобы подключиться к эмулятору Android, работающему на компьютере Mac с виртуальной машины Windows, с помощью перенаправления пакетов выполните следующие действия.
На компьютере Mac запустите эмулятор Android.
На компьютере Mac откройте терминал.
В терминале
adb
убьет сервер:adb kill-server
В терминале определите порты, используемые эмулятором:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
Эмулятор использует пару последовательных TCP-портов — четный порт для подключений консоли и нечетный порт для
adb
подключений. В выходных данных выше эмулятор прослушиваетadb
порт 5555 и прослушивает подключения консоли через порт 5554.В терминале используется
nc
для перенаправления входящих TCP-пакетов, полученных вне порта 5555 (или любого другого порта) на нечетный порт в интерфейсе обратного цикла, а также для перенаправления исходящих пакетов обратно следующим образом:cd /tmp mkfifo backpipe nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
В этом примере
127.0.0.1 5555
обозначает нечетный порт в интерфейсе обратного цикла.nc
Если команда продолжает работать в окне терминала, пакеты будут пересылаться должным образом. После завершения работы с эмулятором можно остановитьnc
пересылку пакетов, нажав клавиши CTRL+C в окне терминала.На виртуальной машине Windows откройте командную строку.
В командной строке подключитесь к эмулятору:
adb connect ip-address-of-the-mac:5555
Замените
ip-address-of-the-mac
в этом примере IP-адресом Mac и 5555 портом, используемым на предыдущем шаге.Примечание.
Доступ к
adb
командной строке можно получить в Visual Studio с помощью пункта меню "Сервис > Android Android > Adb Command Командной строки... ".
После завершения подключения Visual Studio отобразит эмулятор в качестве целевого объекта отладки на локальных устройствах Android, который можно использовать для развертывания приложения в эмуляторе.
Использование перенаправления портов ssh
Если в mac включен удаленный вход, вы можете использовать ssh
перенаправление портов для подключения к эмулятору.
Важно!
ssh
Перенаправление портов требует установки клиента SSH на виртуальной машине Windows. Один из вариантов — установить Git для Windows. Тогда команда ssh
будет доступна в командной строке Git Bash.
Чтобы подключиться к эмулятору Android, работающему на Компьютере Mac с виртуальной машины Windows, с помощью ssh
перенаправления портов выполните следующие действия.
На компьютере Mac запустите эмулятор Android.
На компьютере Mac откройте терминал.
В терминале
adb
убьет сервер:adb kill-server
В терминале определите порты, используемые эмулятором:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
Эмулятор использует пару последовательных TCP-портов — четный порт для подключений консоли и нечетный порт для
adb
подключений. В выходных данных выше эмулятор прослушиваетadb
порт 5555 и прослушивает подключения консоли через порт 5554.На виртуальной машине Windows откройте командную строку.
В командной строке выполните настройку
ssh
двустороннего перенаправления портов между локальным портом в Windows и портом нечетного эмулятора в интерфейсе обратного цикла Mac:ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
В этом примере
localhost:15555
обозначает локальный порт в Windows и127.0.0.1 5555
обозначает нечетный порт в интерфейсе петли.Замените
mac-username
имя пользователя Mac, которое можно получить сwhoami
помощью команды иip-address-of-the-mac
IP-адрес вашего Mac.В командной строке подключитесь к эмулятору с помощью локального порта:
adb connect localhost:15555
В этом примере
localhost:15555
обозначает локальный порт в WindowsПримечание.
Доступ к
adb
командной строке можно получить в Visual Studio с помощью пункта меню "Сервис > Android Android > Adb Command Командной строки... ".Внимание
Если вы используете порт 5555 для локального порта, подумайте,
adb
что эмулятор работает локально в Windows. Это не приводит к возникновению проблем в Visual Studio, но в Visual Studio для Mac это приводит к тому, что приложение завершает работу сразу после запуска.
После завершения подключения Visual Studio отобразит эмулятор в качестве целевого объекта отладки на локальных устройствах Android, который можно использовать для развертывания приложения в эмуляторе.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по