Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour vous connecter à l’émulateur Android s’exécutant sur un Mac à partir d’une machine virtuelle Windows, procédez comme suit :
Remarque
Nous vous recommandons d’utiliser un émulateur Android qui n’inclut pas le Google Play Store.
Démarrez l’émulateur sur le Mac.
Tuer le
adbserveur sur le Mac :adb kill-serverNotez que l’émulateur écoute sur 2 ports TCP sur l’interface réseau de bouclage :
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)Le port numéroté impair est celui utilisé pour se connecter à
adb. Voir aussi https://developer.android.com/tools/devices/emulator.html#emulatornetworking.Option 1 : Permet
ncde transférer des paquets TCP entrants reçus en externe sur le port 5555 (ou tout autre port que vous souhaitez) vers le port numéroté impair sur l’interface de bouclage (127.0.0.1 5555 dans cet exemple) 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 > backpipeTant que les
nccommandes restent en cours d’exécution dans une fenêtre de terminal, les paquets sont transférés comme prévu. Vous pouvez taper Control-C dans la fenêtre terminale pour quitter lesnccommandes une fois que vous avez terminé à l’aide de l’émulateur.(L’option 1 est généralement plus facile que l’option 2, surtout si La sécurité des préférences > système et le pare-feu de confidentialité > sont activés.)
Option 2 : Permet
pfctlde rediriger les paquets TCP à partir du port5555(ou tout autre port que vous souhaitez) sur l’interface réseau partagée vers le port numéroté impair sur l’interface de bouclage (127.0.0.1:5555dans cet exemple) :sed '/rdr-anchor/a rdr pass on vmnet8 inet proto tcp from any to any port 5555 -> 127.0.0.1 port 5555' /etc/pf.conf | sudo pfctl -ef -Cette commande configure le transfert de port à l’aide du
pf packet filterservice système. Les sauts de ligne sont importants. Veillez à les conserver intacts lors du collage de copie. Vous devez également ajuster le nom de l’interface à partir de vmnet8 si vous utilisez Parallels.vmnet8est le nom de l’appareil NAT spécial pour le mode réseau partagé dans VMWare Fusion. L’interface réseau appropriée dans Parallels est probablement vnic0.Connecter à l’émulateur à partir de l’ordinateur Windows :
C:\> adb connect ip-address-of-the-mac:5555Remplacez « ip-address-of-the-mac » par l’adresse IP du Mac, par exemple, comme indiqué par
ifconfig vmnet8 | grep 'inet '. Si nécessaire, remplacez5555par l’autre port souhaité à l’étape 4. (Remarque : un moyen d’obtenir l’accèsadben ligne de commande est via l’invite de commandes > Android > Android Adb android dans Visual Studio.)
Autre technique à l’aide de ssh
Si vous avez activé la connexion à distance sur le Mac, vous pouvez utiliser ssh le transfert de port pour vous connecter à l’émulateur.
Installez un client SSH sur Windows. Une option consiste à installer Git pour Windows. La
sshcommande sera ensuite disponible dans l’invite de commandes Git Bash .Suivez les étapes 1 à 3 ci-dessus pour démarrer l’émulateur, tuer le
adbserveur sur mac et identifier les ports de l’émulateur.Exécutez
sshsur Windows pour configurer le transfert de port bidirectionnel entre un port local sur Windows (localhost:15555dans cet exemple) et le port de l’émulateur numéroté impair sur l’interface de bouclage mac (127.0.0.1:5555dans cet exemple) :C:\> ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-macRemplacez
mac-usernamepar votre nom d’utilisateur Mac comme indiqué parwhoami. Remplacezip-address-of-the-macpar l’adresse IP du Mac.Connecter à l’émulateur à l’aide du port local sur Windows :
C:\> adb connect localhost:15555(Remarque : un moyen simple d’obtenir l’accès
adben ligne de commande est via l’invite de commandes Android > Android Adb d’Outils > dans Visual Studio.)
Attention : si vous utilisez le port 5555 pour le port local, adb pensez que l’émulateur s’exécute localement sur Windows. Cela ne provoque aucun problème dans Visual Studio, mais dans Visual Studio pour Mac il provoque la sortie de l’application immédiatement après le lancement.
Une autre technique n’est adb -H pas encore prise en charge
En théorie, une autre approche consisterait à utiliser adbla fonctionnalité intégrée de connexion à un adb serveur s’exécutant sur un ordinateur distant (voir par exemple https://stackoverflow.com/a/18551325).
Toutefois, les extensions IDE Xamarin.Android ne fournissent pas actuellement un moyen de configurer cette option.
Informations sur le contact
Ce document traite du comportement actuel à compter de mars 2016. La technique décrite dans ce document ne fait pas partie de la suite de tests stables pour Xamarin, afin qu’elle puisse s’arrêter à l’avenir.
Si vous remarquez que la technique ne fonctionne plus ou si vous remarquez d’autres erreurs dans le document, n’hésitez pas à ajouter à la discussion sur le fil de forum suivant : http://forums.xamarin.com/discussion/33702/android-emulator-from-host-device-inside-windows-vm Merci !