Поделиться через


Подключение эмулятор Android на Mac из виртуальной машины Windows

Эмулятор Android предоставляет универсальные сетевые возможности, которые можно использовать для различных целей, включая подключение к эмулятору, работающему на Компьютере Mac, из виртуальной машины Windows. Это полезно при запуске Windows в Parallels на Компьютере Mac. В этом сценарии необходимо использовать эмулятор на Компьютере Mac, так как он не может работать в Parallels. Сведения об установке эмулятора Android на Mac см. в разделе "Установка".

Важно!

Адрес 127.0.0.1 на компьютере разработки соответствует интерфейсу обратного цикла эмулятора.

Существует два основных подхода для подключения к эмулятору Android на Mac из виртуальной машины Windows:

  1. Использование nc для переадресации пакетов. Дополнительные сведения см. в разделе "Использование nc" для переадресации пакетов.
  2. Использование ssh перенаправления портов. Дополнительные сведения см. в разделе "Использование перенаправления портов ssh".

В обоих случаях мост отладки Android (ADB) используется для подключения к эмулятору. ADB — это средство командной строки, которое упаковано с пакетом средств платформы sdk для Android, которое позволяет взаимодействовать с устройством. Команда adb упрощает различные действия устройства, включая подключение к устройствам. Дополнительные сведения см. в разделе "adbМост отладки Android" (adb) на developer.android.com.

Использование nc для переадресации пакетов

Чтобы подключиться к эмулятору Android, работающему на компьютере Mac с виртуальной машины Windows, с помощью перенаправления пакетов выполните следующие действия.

  1. На компьютере Mac запустите эмулятор Android.

  2. На компьютере Mac откройте терминал.

  3. В терминалеadb убьет сервер:

    adb kill-server
    
  4. В терминале определите порты, используемые эмулятором:

    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.

  5. В терминале используется 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 в окне терминала.

  6. На виртуальной машине Windows откройте командную строку.

  7. В командной строке подключитесь к эмулятору:

    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 перенаправления портов выполните следующие действия.

  1. На компьютере Mac запустите эмулятор Android.

  2. На компьютере Mac откройте терминал.

  3. В терминалеadb убьет сервер:

    adb kill-server
    
  4. В терминале определите порты, используемые эмулятором:

    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.

  5. На виртуальной машине Windows откройте командную строку.

  6. В командной строке выполните настройку 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.

  7. В командной строке подключитесь к эмулятору с помощью локального порта:

    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, который можно использовать для развертывания приложения в эмуляторе.