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:
- Uso de
nc
para executar o encaminhamento de pacotes. Para mais informações, consulte Usar nc para executar o encaminhamento de pacotes. - 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:
No Mac, inicie o Android Emulator.
No Mac, abra o Terminal.
No Terminal, elimine o servidor
adb
: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 conexões
adb
. Na saída acima, o emulador escutaadb
na porta 5555 e escuta conexões de 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 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 pacotesnc
pressionando CTRL+C na janela Terminal.Na VM 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 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:
No Mac, inicie o Android Emulator.
No Mac, abra o Terminal.
No Terminal, elimine o servidor
adb
: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 conexões
adb
. Na saída acima, o emulador escutaadb
na porta 5555 e escuta conexões de console na porta 5554.Na VM 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 seu nome de usuário do Mac, que pode ser obtido com o comandowhoami
, eip-address-of-the-mac
pelo endereço IP do seu 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 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.