Se connecter à un émulateur Android sur un Mac depuis une machine virtuelle Windows
L’émulateur Android fournit des fonctionnalités de mise en réseau polyvalentes qui peuvent être utilisées à différentes fins, notamment la connexion à un émulateur s’exécutant sur un Mac depuis une machine virtuelle Windows. Cela est utile lors de l’exécution de Windows dans Parallels sur un Mac. Dans ce scénario, il est nécessaire d’utiliser l’émulateur sur le Mac, car il ne peut pas s’exécuter dans Parallels. Pour plus d’informations sur l’installation de l’émulateur Android sur un Mac, consultez Installation.
Important
L’adresse 127.0.0.1 sur votre ordinateur de développement correspond à l’interface de bouclage de l’émulateur.
Il existe deux approches principales pour la connexion à un émulateur Android sur un Mac depuis une machine virtuelle Windows :
- Utilisation de
nc
pour effectuer le transfert de paquets. Pour plus d’informations, consultez Utiliser nc pour effectuer le transfert de paquets. - Utilisation du réacheminement de port
ssh
. Pour plus d’informations, consultez Utiliser le réacheminement de port SSH.
Dans les deux cas, Android Debug Bridge (ADB) est utilisé pour se connecter à l’émulateur. ADB est un outil en ligne de commande fourni avec le package Android SDK Platform Tools, qui vous permet de communiquer avec un appareil. La commande adb
facilite diverses actions d’appareil, notamment la connexion aux appareils. Pour plus d’informations sur adb
, consultez Android Debug Bridge (ADB) sur developer.android.com.
Utiliser nc pour effectuer le transfert de paquets
Pour vous connecter à l’émulateur Android s’exécutant sur un Mac à partir d’une machine virtuelle Windows, en utilisant le transfert de paquets, procédez comme suit :
Sur votre Mac, démarrez l’émulateur Android.
Sur votre Mac, ouvrez Terminal.
Dans Terminal, arrêtez le serveur
adb
:adb kill-server
Dans Terminal, identifiez les ports utilisés par l’émulateur :
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)
L’émulateur utilise une paire de ports TCP séquentiels : un port pair pour les connexions de console et un port impair pour les connexions
adb
. Dans la sortie ci-dessus, l’émulateur écouteadb
sur le port 5555 et écoute les connexions de console sur le port 5554.Dans Terminal, utilisez
nc
pour transférer des paquets TCP entrants reçus en externe sur le port 5555 (ou tout autre port) vers le port impair sur l’interface de bouclage, et pour transférer les paquets sortants de l’autre façon :cd /tmp mkfifo backpipe nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
Dans cet exemple,
127.0.0.1 5555
indique le port impair sur l’interface de bouclage.À condition que la commande
nc
continue à s’exécuter dans une fenêtre Terminal, les paquets sont transférés comme prévu. Une fois que vous avez terminé d’utiliser l’émulateur, vous pouvez arrêternc
d’effectuer le transfert de paquets en appuyant sur CTRL + C dans la fenêtre Terminal.Dans votre machine virtuelle Windows, ouvrez l’invite de commandes.
Dans l’invite de commandes, connectez-vous à l’émulateur :
adb connect ip-address-of-the-mac:5555
Remplacez
ip-address-of-the-mac
dans cet exemple par l’adresse IP de votre Mac et 5555 par le port que vous avez utilisé à l’étape précédente.Remarque
L’accès en ligne de commande à
adb
peut être obtenu dans Visual Studio via l’élément de menu Outils > Android > invite de commande adb Android...
Une fois la connexion terminée, Visual Studio affiche l’émulateur en tant que cible de débogage dans Appareils locaux Android, que vous pouvez utiliser pour déployer votre application sur l’émulateur.
Utiliser le réacheminement de port SSH
À condition que Session à distance soit activé sur votre Mac, vous pouvez utiliser le réacheminement de port ssh
pour vous connecter à l’émulateur.
Important
Le réacheminement de port ssh
nécessite l’installation d’un client SSH sur votre machine virtuelle Windows. Une option consiste à installer Git pour Windows. La commande ssh
sera ensuite disponible dans l’invite de commandes Git Bash.
Pour vous connecter à l’émulateur Android s’exécutant sur un Mac à partir d’une machine virtuelle Windows, en utilisant le réacheminement de port ssh
, procédez comme suit :
Sur votre Mac, démarrez l’émulateur Android.
Sur votre Mac, ouvrez Terminal.
Dans Terminal, arrêtez le serveur
adb
:adb kill-server
Dans Terminal, identifiez les ports utilisés par l’émulateur :
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)
L’émulateur utilise une paire de ports TCP séquentiels : un port pair pour les connexions de console et un port impair pour les connexions
adb
. Dans la sortie ci-dessus, l’émulateur écouteadb
sur le port 5555 et écoute les connexions de console sur le port 5554.Dans votre machine virtuelle Windows, ouvrez l’invite de commandes.
Dans l’invite de commandes, exécutez
ssh
pour configurer le transfert de port bidirectionnel entre un port local sur Windows et le port de l’émulateur numéroté impair sur l’interface de bouclage du Mac :ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
Dans cet exemple,
localhost:15555
indique le port local sur Windows et127.0.0.1 5555
indique le port impair sur l’interface de bouclage.Remplacez
mac-username
par votre nom d’utilisateur Mac, qui peut être obtenu par la commandewhoami
, etip-address-of-the-mac
par l’adresse IP de votre Mac.Dans l’invite de commandes, connectez-vous à l’émulateur à l’aide du port local :
adb connect localhost:15555
Dans cet exemple,
localhost:15555
indique le port local sur Windows.Remarque
L’accès en ligne de commande à
adb
peut être obtenu dans Visual Studio via l’élément de menu Outils > Android > invite de commande adb Android...
Une fois la connexion terminée, Visual Studio affiche l’émulateur en tant que cible de débogage dans Appareils locaux Android, que vous pouvez utiliser pour déployer votre application sur l’émulateur.