Émulateur Android sur MacOS depuis un Windows dans Parallels

Dans un article précédent j’avais fait référence à un article de James Montemagno expliquant comment utiliser Xamarin Android Player sur MacOS depuis Windows dans Parallels.
L’intérêt de cette configuration est d’offrir les meilleures performances avec l’émulateur Android lorsque l’on développe pour Xamarin Android depuis Visual Studio.
Xamarin Android Player était très intéressant dans la mesure où les émulateurs Android précédents étaient assez peu performants mais cet avantage s’est étiolé avec le temps et Xamarin a donc pris la décision d’arrêter son développement.
Il est maintenant conseillé d’utiliser les émulateurs Android officiels qui outre de bien meilleurs performances qu’auparavant offrent les Google Play Services intégrés dans la plupart des configurations !
Nous allons donc voir, comment à partir de ce qui a déjà été écrit auparavant, utiliser les émulateurs Android depuis notre machine virtuelle Windows.
Préparation de MacOS
Installer le Xamarin Android
Lorsque vous installez Xamarin Studio sur votre Mac, tout le nécessaire pour installer les émulateurs est présent dans le SDK Android. C’est également le cas lorsque vous installez Android Studio. Attention cependant aux chemins d’installation du SDK Android peuvent être différent entre Xamarin Studio et Android Studio.
Installer Intel HAXM
Intel Hardware Accelerated Execution Manager est un rapidement un outil permettant d’accélérer les performances de manière conséquente les émulateurs Android utilisant un CPU x86. C’est donc un indispensable !
https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager
Je vous invite également à lire la documentation d’installation en cas de besoin.
Configurer votre émulateur
Il existe de nombreuses documentations dans le SDK
Dans sa dernière version, il est plus simple de créer les émulateurs avec Android Studio qu’avec Xamarin Studio alors n’hésitez pas à passer par Android Studio si vous l’avez sur votre Mac.
Je vous conseille très fortement d’utiliser les images fonctionnant en x86 pour bénéficier de performances correctes.
Ajout du PATH vers les tools Android
Par soucis de simplicité je vous invite aussi fortement à ajouter le chemin vers votre SDK android dans votre terminal bash sur MacOS.
Dans un terminal exécuter les commandes suivantes à la racine de votre utilisateur :
touch .bash_profile
open .bash_profile
Ajouter la ligne correspondant à votre SDK Android en tête du fichier export PATH=$PATH=:/Users/John/Library/Android/sdk/tools
Enregistrer le fichier et fermez terminal
Configurer le partage SSH
Si vous faîtes du développement iOS depuis Visual Studio cette partie est normalement déjà faîte suite aux instructions fournies par Xamarin. Néanmoins en cas de doute, il suffit d’aller dans les paramètres systèmes et dans la partie “Partage”, d’ajouter votre utilisateur à la liste des utilisateurs autorisés.
L’hôte MacOS est maintenant prêt !
Préparation de la machine Windows
Pour la suite de ce billet, je part du principe que Visual Studio et Xamarin Android sont correctement installés sur Windows.
Plink
Plink est l’outil qui va nous permettre de créer un tunnel SSH entre Windows et MacOS. C’est ce tunnel qui sera utilisé par Windows pour communiquer avec le serveur ADB tournant sur le Mac.
Téléchargez-le sur le site de Putty.
Positionnez cet executable dans un dossier de votre choix.
Création des scripts
Afin de simplifier tout le reste du processus de connection nous allons créer deux scripts à héberger dans le même dossier que Plink dont voici le code source.
connect-to-mac.cmd
@echo off
"C:\Program Files (x86)\Android\android-sdk\platform-tools\adb.exe" kill-server
plink -L 5554:localhost:5554 -L 5555:localhost:5555 -m mac-script.sh -l MyUserName -pw MyPassword 10.211.55.2
mac-script.sh
#!/bin/sh
/Users/John/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb kill-server
read -p "Press any key to terminate SSH tunnel" anykey
Veillez à bien remplacer MyUserName et MyPassword par votre couple login/mot de passe utilisé sur le Mac par l’utilisateur que vous avez partagés précédemment.
Pensez également a modifier l’adresse ip utilisée dans le script par l’adresse ip de l’hôte Mac vu depuis votre machine virtuelle Windows. Vous pouvez trouver cette information dans votre Mac dans les paramètres systèmes.
Enfin, assurez-vous que les path vers les SDK Android sont corrects.
La machine virtuelle Windows est maintenant prête !
Développons !
Maintenant que tout est prêt il va falloir faire les choses dans l’ordre.
Sur MacOS
Tout d’abord lançons l’émulateur Android. Pour celà on peux utiliser terminal et maintenant entrer la commande suivante :
emulator -avd AvdName
Le paramètre AvdName correspond au nom de votre AVD tel que vous l’avez choisi (voir captures au début de l’article).
Sur Windows
Lancez Visual Studio et exécutez le Script connect-to-mac.cmd
Si toutes les étapes précédentes ont été réalisés avec succès et que votre projet Xamarin actuel est un projet Xamarin Android vous pouvez maintenant voir dans votre Visual Studio l’émulateur du Mac apparaître.
Sources
Cet article se base sur les techniques montrés dans ces deux articles :
http://chrisriesgo.com/android-emulator-debugging-from-parallels-to-os-x/
https://msdn.microsoft.com/en-us/library/dn913137(v=vs.120).aspx
Heureusement qu’il y a des émulateurs sinon ce serait difficile de développer des applis.