Bon, voilà, c’est fait, je me relance dans les tests de Xamarin. J’avais essayé voilà plusieurs, et … j’avais abandonné : trop bugué, ça plantait tout le temps, voire impossible de lancer l’émulateur … sans parler du non support réel pour iPhone (obligé d’avoir un mac #WTF)
Je me suis dit, aller, ça fait plusieurs années, ça a du changé ! Voyons ensemble :
Premier test : une projet POC Android avec Xamarin
Je lance Visual Studio 2019, je crée un projet Android, juste un simple, vous savez, rien de compliqué.
Je lance l’émulation et ….
PAF, ça fait des chocapics ! Tiens, encore une erreur !
emulator: WARNING: cannot read adb public key file: C:\Users\evan\.android\adbkey.pub
emulator: ERROR: Missing initial data partition file: C:\Users\evan\.android\avd\Android_Accelerated_x86_Oreo.avd/userdata.img
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Windows Hypervisor Platform (WHPX) is properly installed and usable.
CPU acceleration status: Please disable Hyper-V before using the Android Emulator. Start a command prompt as Administrator, run ‘bcdedit /set hypervisorlaunchtype off’, reboot.
> Incompréhensible => ils disent le contraire sur la doc officielle …
On tente quand même
Au redémarrage Docker me pleure dessus :
Il faut activer la virtualisation ….WTF !
Bon on teste quand meme …
Plus l’erreur, mais :
Impossible de démarrer l’émulateur Android_Accelerated_x86_Oreo.
En attente de la fin des vérifications à l’exécution
Vérifications à l’exécution effectuées
La génération a été annulée.
On tente d’installer un emulator, sans la dernière version (sans Oreo) :
Et ça … plante :
sans aucune réelle info.
Allons voir dans le EventLog :
De mieux en mieux ! Au secours.
Bon cherchons à utiliser un device déjà existant alors ?:
Ca ne veut pas fonctionner :
Le dossier image n’existe pas dans le config.ini, me dit il … mais what ?!
Essayons de relancer l’Oreo device :
Et hop, encore une erreur .. décidemment, coder pour Android, avec Xamarin, est un vrai parcours du combattant : Windows Phone pourquoi tu es parti ?
En lançant Visual studio 2019, la même chose :
En attente de la fin des vérifications à l’exécution
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Windows Hypervisor Platform (WHPX) is properly installed and usable.
CPU acceleration status: HAXM is not installed on this machine
Impossible de démarrer l’émulateur Android_Accelerated_x86_Oreo.
C’est décidé, nous réinstallons l’émulateur Android, pour Visual Studio.
Et puis, après vérifier que tout est vraiment ok dans notre configuration de l’Hyper V, nous relançons la commande : bcdedit /set hypervisorlaunchtype, mais cette fois-ci avec bcdedit /set hypervisorlaunchtype auto.
On redémarre notre PC (une nouvelle fois).
Et là, on teste (après avoir re-re-re lancé notre Visual Studio et donc notre projet), et ….
Le miracle a lieu – plus d’erreurs avec Xamarin ?
C:\Program Files (x86)\Android\android-sdk\emulator\emulator.EXE -no-boot-anim -avd Android_Accelerated_x86_Oreo -prop monodroid.avdname=Android_Accelerated_x86_Oreo
Windows Hypervisor Platform accelerator is operational
Your emulator is out of date, please update by launching Android Studio:
– Start Android Studio
– Select menu « Tools > Android > SDK Manager »
– Click « SDK Tools » tab
– Check « Android Emulator » checkbox
– Click « OK »
2>En attente de la fin des vérifications à l’exécution
L’émulateur Android_Accelerated_x86_Oreo est en cours d’exécution.
En attente de l’émulateur…
emulator: INFO: boot completed
Detecting installed packages
Detecting installed packages…
Removing old runtime
Removing old runtime: Mono.Android.DebugRuntime…
Installing shared runtime
Target device is x86.
Installing the Mono shared runtime (debug – 1556497608)…
Bon, ça prend plusieurs minutes déjà pour avoir le visuel de notre Android émulé … on attend encore plusieurs minutes pour le déploiement de notre application.
Une application qui fonctionne !
Et ça y est, après de rudes heures de bataille, nous avons gagné : Xamarin lance bien notre projet Android ! Hiha !