Partilhar via


Conectar-se a um emulador Android em um Mac de dentro de uma máquina virtual Windows

O emulador Android fornece recursos de rede versáteis que podem ser usados para diferentes finalidades, incluindo conectar-se um emulador em execução em um Mac de dentro de uma VM (máquina virtual) Windows. Isso é útil ao executar o Windows no Parallels em um Mac. Nesse cenário, é necessário usar o emulador no Mac, pois ele não pode ser executado no Parallels. Para informações sobre como instalar o emulador Android em um Mac, consulte Instalação.

Importante

O endereço 127.0.0.1 em seu computador de desenvolvimento corresponde à interface de loopback do emulador.

Há duas abordagens principais para se conectar a um emulador Android em um Mac de dentro de uma VM Windows:

  1. Uso de nc para executar o encaminhamento de pacotes. Para mais informações, consulte Usar nc para executar o encaminhamento de pacotes.
  2. Uso de ssh para encaminhamento de porta. Para mais informações, confira Usar o encaminhamento de porta SSH.

Em ambos os casos, o ADB (Android Debug Bridge) é usado para se conectar ao emulador. O ADB é uma ferramenta de linha de comando fornecida com o pacote das Ferramentas da Plataforma Android SDK, que permite que você se comunique com um dispositivo. O comando adb facilita diversas ações do dispositivo, incluindo se conectar com dispositivos. Para mais informações sobre adb, consulte ADB (Android Debug Bridge) em developer.android.com.

Use nc para executar o encaminhamento de pacotes

Para se conectar ao Android Emulator em execução em um Mac a partir de uma VM Windows usando o encaminhamento de pacotes, use as seguintes etapas:

  1. No Mac, inicie o Android Emulator.

  2. No Mac, abra o Terminal.

  3. No Terminal, elimine o servidor adb:

    adb kill-server
    
  4. No Terminal, identifique as portas usadas pelo emulador:

    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)
    

    O emulador usa um par de portas TCP sequenciais – uma porta par para conexões de console e uma porta ímpar para conexões adb. Na saída acima, o emulador escuta adb na porta 5555 e escuta conexões de console na porta 5554.

  5. No Terminal, use nc para encaminhar pacotes TCP de entrada recebidos externamente na porta 5555 (ou qualquer outra porta) para a porta ímpar na interface de loopback e encaminhar os pacotes de saída de volta para o outro lado:

    cd /tmp
    mkfifo backpipe
    nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
    

    Neste exemplo, 127.0.0.1 5555 indica a porta ímpar na interface de loopback.

    Desde que o comando nc continue em execução em uma janela Terminal, os pacotes serão encaminhados conforme o esperado. Depois de terminar de usar o emulador, você pode interromper o encaminhamento de pacotes nc pressionando CTRL+C na janela Terminal.

  6. Na VM Windows, abra o Prompt de comando.

  7. No Prompt de comando, conecte-se ao emulador:

    adb connect ip-address-of-the-mac:5555
    

    Substitua ip-address-of-the-mac neste exemplo pelo endereço IP do seu Mac e 5555 pela porta que você usou na etapa anterior.

    Observação

    O acesso da linha de comando a adb pode ser obtido no Visual Studio no item de menu Ferramentas > Android > Prompt de Comando Android Adb....

Quando a conexão for concluída, o Visual Studio exibirá o emulador como um destino de depuração em Dispositivos Android Locais, que você pode usar para implantar seu aplicativo no emulador.

Usar o encaminhamento de porta SSH

Se o Acesso Remoto estiver ativado no seu Mac, você poderá usar o encaminhamento de porta ssh para se conectar ao emulador.

Importante

O encaminhamento de porta ssh requer que você tenha instalado um cliente SSH em sua VM Windows. Uma opção é instalar o Git para Windows. O comando ssh ficará disponível no prompt de comando do Git Bash.

Para se conectar ao Android Emulator em execução em um Mac a partir de uma máquina virtual Windows usando o encaminhamento de porta ssh, siga estas etapas:

  1. No Mac, inicie o Android Emulator.

  2. No Mac, abra o Terminal.

  3. No Terminal, elimine o servidor adb:

    adb kill-server
    
  4. No Terminal, identifique as portas usadas pelo emulador:

    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)
    

    O emulador usa um par de portas TCP sequenciais – uma porta par para conexões de console e uma porta ímpar para conexões adb. Na saída acima, o emulador escuta adb na porta 5555 e escuta conexões de console na porta 5554.

  5. Na VM Windows, abra o Prompt de comando.

  6. No Prompt de Comando, execute ssh para configurar o encaminhamento de porta bidirecional entre uma porta local no Windows e a porta do emulador ímpar na interface de loopback do Mac:

    ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
    

    Neste exemplo, localhost:15555 indica a porta local no Windows e 127.0.0.1 5555 indica a porta ímpar na interface de loopback.

    Substitua mac-username pelo seu nome de usuário do Mac, que pode ser obtido com o comando whoami, e ip-address-of-the-mac pelo endereço IP do seu Mac.

  7. No Prompt de comando, conecte-se ao emulador usando a porta local:

    adb connect localhost:15555
    

    Neste exemplo, localhost:15555 indica a porta local no Windows

    Observação

    O acesso da linha de comando a adb pode ser obtido no Visual Studio no item de menu Ferramentas > Android > Prompt de Comando Android Adb....

Quando a conexão for concluída, o Visual Studio exibirá o emulador como um destino de depuração em Dispositivos Android Locais, que você pode usar para implantar seu aplicativo no emulador.