Compartilhar via


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

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

Importante

O endereço 127.0.0.1 na máquina 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 do Windows:

  1. Usando nc para executar o encaminhamento de pacotes. Para obter mais informações, consulte Usar nc para executar o encaminhamento de pacotes.
  2. Usando ssh o encaminhamento de portas. Para obter mais informações, consulte Usar o encaminhamento de porta ssh.

Em ambos os casos, o Android Debug Bridge (ADB) é usado para se conectar ao emulador. O ADB é uma ferramenta de linha de comando que acompanha o pacote Android SDK Platform Tools, que permite que você se comunique com um dispositivo. O adb comando facilita uma variedade de ações do dispositivo, incluindo a conexão com dispositivos. Para obter mais informações sobre adbo , consulte Android Debug Bridge (adb) no developer.android.com.

Use nc para executar o encaminhamento de pacotes

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

  1. No Mac, inicie o emulador Android.

  2. No Mac, abra o Terminal.

  3. No Terminal, mate o adb servidor:

    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 adb conexões. Na saída acima, o emulador escuta na porta 5555 e escuta adb as conexões do 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 para encaminhar os pacotes de saída de volta da outra maneira:

    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 continue sendo executado em uma janela do Terminal, os pacotes serão encaminhados conforme o nc esperado. Depois de terminar de usar o emulador, você pode parar de executar o encaminhamento de nc pacotes pressionando CTRL+C na janela Terminal.

  6. Na VM do 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 Mac e 5555 pela porta usada na etapa anterior.

    Observação

    O acesso à linha de comando pode adb ser obtido no Visual Studio através do item de menu Ferramentas > Android > Android Adb Command Prompt...

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

Usar o encaminhamento de porta ssh

Desde que o Login Remoto esteja ativado no Mac, você pode usar ssh o encaminhamento de porta para se conectar ao emulador.

Importante

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

Para se conectar ao emulador Android em execução em um Mac a partir de uma máquina virtual do Windows, usando ssh o encaminhamento de porta, use as seguintes etapas:

  1. No Mac, inicie o emulador Android.

  2. No Mac, abra o Terminal.

  3. No Terminal, mate o adb servidor:

    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 adb conexões. Na saída acima, o emulador escuta na porta 5555 e escuta adb as conexões do console na porta 5554.

  5. Na VM do 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 nome de usuário do Mac, que pode ser obtido com o whoami comando, e ip-address-of-the-mac pelo endereço IP do 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 à linha de comando pode adb ser obtido no Visual Studio através do item de menu Ferramentas > Android > Android Adb Command Prompt...

    Cuidado

    Se você usar a porta 5555 para a porta local, adb pensará que o emulador está sendo executado localmente no Windows. Isso não causa problemas no Visual Studio, mas no Visual Studio para Mac faz com que o aplicativo saia imediatamente após a inicialização.

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