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:
- Usando
nc
para executar o encaminhamento de pacotes. Para obter mais informações, consulte Usar nc para executar o encaminhamento de pacotes. - 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 adb
o , 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:
No Mac, inicie o emulador Android.
No Mac, abra o Terminal.
No Terminal, mate o
adb
servidor:adb kill-server
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 escutaadb
as conexões do console na porta 5554.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 denc
pacotes pressionando CTRL+C na janela Terminal.Na VM do Windows, abra o Prompt de Comando.
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:
No Mac, inicie o emulador Android.
No Mac, abra o Terminal.
No Terminal, mate o
adb
servidor:adb kill-server
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 escutaadb
as conexões do console na porta 5554.Na VM do Windows, abra o Prompt de Comando.
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 e127.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 owhoami
comando, eip-address-of-the-mac
pelo endereço IP do Mac.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 WindowsObservaçã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.