Compartir a través de


Conectarse a Android Emulator en un equipo Mac desde dentro de una máquina virtual de Windows.

Android Emulator proporciona funcionalidades de red versátiles que se pueden usar para diferentes propósitos, incluida la conexión a un emulador que se ejecuta en un equipo Mac desde dentro de una máquina virtual (VM) de Windows. Esto resulta útil cuando se ejecuta Windows en Parallels en un equipo Mac. En este escenario, es necesario usar el emulador en el equipo Mac, ya que no se puede ejecutar en Parallels. Para obtener información sobre cómo instalar Android Emulator en un equipo Mac, consulta Instalación.

Importante

La dirección 127.0.0.1 de la máquina de desarrollo corresponde a la interfaz de bucle invertido del emulador.

Hay dos enfoques principales para conectarse a Android Emulator en un equipo Mac desde dentro de una máquina virtual de Windows:

  1. Usar nc para realizar el reenvío de paquetes. Para obtener más información, consulta Uso de nc para realizar el reenvío de paquetes.
  2. Usar ssh para realizar el reenvío de puertos. Para obtener más información, consulta Reenvío de un puerto SSH.

En ambos casos, se usa Android Debug Bridge (ADB) para conectarse al emulador. ADB es una herramienta de línea de comandos que se incluye con el paquete de herramientas de plataforma de Android SDK, que te permite comunicarte con un dispositivo. El comando adb facilita una variedad de acciones de dispositivo, incluida la conexión a dispositivos. Para obtener más información sobre adb, consulta Android Debug Bridge (adb) en developer.android.com.

Uso de nc para realizar el reenvío de paquetes

Para conectarte a Android Emulator que se ejecuta en un equipo Mac desde una máquina virtual de Windows, mediante el reenvío de paquetes, sigue estos pasos:

  1. En el equipo Mac, inicia Android Emulator.

  2. En el equipo Mac, abre Terminal.

  3. En Terminal, elimina el servidor adb:

    adb kill-server
    
  4. En Terminal, identifica los puertos que usa el 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)
    

    El emulador usa un par de puertos TCP secuenciales: un puerto con numeración par para las conexiones de consola y un puerto con numeración impar para las conexiones adb. En la salida anterior, el emulador escucha adb en el puerto 5555 y escucha las conexiones de consola en el puerto 5554.

  5. En Terminal, usa nc para reenviar los paquetes TCP entrantes recibidos externamente en el puerto 5555 (o en cualquier otro puerto) al puerto con numeración impar en la interfaz de bucle invertido y para reenviar los paquetes salientes en la otra dirección:

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

    En este ejemplo, 127.0.0.1 5555 denota el puerto con numeración impar en la interfaz de bucle invertido.

    Siempre y cuando el comando nc siga ejecutándose en una ventana de terminal, los paquetes se reenviarán según lo esperado. Una vez que haya terminado de usar el emulador, puede dejar nc de realizar el reenvío de paquetes presionando Ctrl+C en la ventana Terminal.

  6. En la máquina virtual de Windows, abre el símbolo del sistema.

  7. En el símbolo del sistema, conéctate al emulador:

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

    Reemplaza ip-address-of-the-mac en este ejemplo por la dirección IP del equipo Mac y 5555 por el puerto que has usado en el paso anterior.

    Nota:

    El acceso a la línea de comandos para adb se puede obtener en Visual Studio a través del elemento de menú Herramientas > Android > Símbolo del sistema Android Adb....

Cuando se complete la conexión, Visual Studio mostrará el emulador como destino de depuración en Dispositivos locales Android, que puedes usar para implementar la aplicación en el emulador.

Uso del reenvío de puertos SSH

Si has habilitado Sesión remota en el equipo Mac, puedes usar el reenvío de puertos ssh para conectarte al emulador.

Importante

El reenvío de puertos ssh requiere que hayas instalado un cliente SSH en la máquina virtual de Windows. Una opción es instalar Git para Windows. El comando ssh estará entonces disponible en el símbolo del sistema de Git Bash.

Para conectarte a Android Emulator que se ejecuta en un equipo Mac desde una máquina virtual de Windows, mediante el reenvío de puertos ssh, sigue estos pasos:

  1. En el equipo Mac, inicia Android Emulator.

  2. En el equipo Mac, abre Terminal.

  3. En Terminal, elimina el servidor adb:

    adb kill-server
    
  4. En Terminal, identifica los puertos que usa el 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)
    

    El emulador usa un par de puertos TCP secuenciales: un puerto con numeración par para las conexiones de consola y un puerto con numeración impar para las conexiones adb. En la salida anterior, el emulador escucha adb en el puerto 5555 y escucha las conexiones de consola en el puerto 5554.

  5. En la máquina virtual de Windows, abre el símbolo del sistema.

  6. En el símbolo del sistema, ejecuta ssh para configurar el reenvío de puertos bidireccional entre un puerto local de Windows y el puerto del emulador con numeración impar de la interfaz de bucle invertido del equipo Mac:

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

    En este ejemplo, localhost:15555 denota el puerto local en Windows y 127.0.0.1 5555 denota el puerto con numeración impar en la interfaz de bucle invertido.

    Reemplaza mac-username por el nombre de usuario del equipo Mac, que se puede obtener con el comando whoami y ip-address-of-the-mac por la dirección IP del equipo Mac.

  7. En el símbolo del sistema, conéctate al emulador mediante el puerto local:

    adb connect localhost:15555
    

    En este ejemplo, localhost:15555 denota el puerto local en Windows.

    Nota:

    El acceso a la línea de comandos para adb se puede obtener en Visual Studio a través del elemento de menú Herramientas > Android > Símbolo del sistema Android Adb....

Cuando se complete la conexión, Visual Studio mostrará el emulador como destino de depuración en Dispositivos locales Android, que puedes usar para implementar la aplicación en el emulador.