Configurez votre Android Emulator pour qu’il soit rapide !

Si vous développez pour iOS et Android, vous avez très certainement utilisé l’iPhone Simulator et l’Android Emulator. A première vue, il n’y a pas de problème frappant avec l’iPhone Simulator, alors que l’emulateur de l’OS de Google est lent… très lent… extremement lent ! Tellement lent qu’il en devient difficile de l’utiliser pour faire du debug, et si vous utilisez Appcelerator Titanium, vous allez préférer tester un maximum sur iOS, et ne lancer Android que lorsque vous ne pouvez pas faire autrement.

Il faut savoir que l’Android Emulator est basé sur QEMU (the Quick EMUlator) qui émule un processeur ARM sur votre ordinateur qui a (très certainement) un processeur x86. Inutile d’expliquer pourquoi émuler un processeur par un logiciel n’est pas la meilleure idée si vous voulez avoir quelque chose de réactif, et utilisable. De plus, l’emulateur doit s’occuper des nombreuses autres fonctionnalités matérielles. Cela fait énormément de calcul, ajoutez à cela le fait que les smartphones d’aujourd’hui sont puissants, et vous obtenez un émulateur très lent !

Super, donc je ne peux rien y faire ?

Bien sûr que si ! La première chose à faire et de lancer votre Android SDK Manager, pour cela, allez dans le répertoire d’installation du SDK Android et lancez la commande suivante :

$ ./tools/android

Vous remarquerez qu’il y’a une ligne “Intel x86 Atom System Image” disponible pour les versions 4.2.2, 4.1.2, 4.0.3 et 2.3.3 d’Android. Sélectionnez les versions que vous souhaitez tester et installez les. Si vous descendez en bas de cet écran, vous allez voir un répertoire “Extras”, ouvrez-le et sélectionnez “Intel x86 emulator accelerator (HAXM)” afin de le télécharger. Vous devez installer ce driver en vous rendant dans le sous-répertoire extras/intel/Hardware_Accelerated_Execution_Manager/ du dossier du SDK. Lancez simplement IntelHAXM.dmg.

Maintenant que tout est installé, vous devez configurer vos appareils (“devices”). Utilisez le menu Tools > Android Virtual Device Manager (AVD Manager). Vous voyez la liste de tous vos appareils, créez-en un nouveau. En sélectionnant une version cible qui possède une image x86, vous allez pouvoir modifier le champ CPU/ABI pour choisir “Intel Atom (x86)”. Cette configuration, avec le driver HAXM très facilement installé précédemment, vous permettra d’avoir un émulateur beaucoup plus rapide. Mais nous pouvons aller encore plus loin ! Éditez votre appareil, et dans la partie “Emulation options”, cochez la case “Use GPU Host”, l’émulateur utilisera ainsi le GPU de votre machine au lieu d’en émuler un.

Ok, notre appareil est maintenant prêt ! Il n’y a plus qu’à tester.

$ ./tools/emulator -avd Test_for_fast_emulator -wipe-data -no-boot-anim -cpu-delay 0
$ ./platform-tools/adb install ../Test/build/android/bin/app.apk

YEAHYYY ! C’est rapide !

J’utilise Titanium Studio, comment je peux faire ?

Si vous utilisez Titanium Studio, vous pouvez également le configurer pour que l’Android Emulator utilise une image x86.

Cliquez sur “Run Configurations”, et sélectionnez le projet sur lequel vous travaillez, choisissez une version d’Android avec le label “x86”.

Lancez l’émulateur, il devrait être déjà plus rapide, mais pas aussi rapide que celui créé via AVD Manager, tout simplement parce que nous n’avons pas dit à l’émulateur d’utiliser le GPU de notre machine. Lancez l’AVD Manager, et vous pouvez voir un nouvel appareil utilisant l’image x86. Editez-le.

Vous pouvez voir une section “Hardware”, cliquez sur New, sélectionnez la propriété “GPU Emulation”, et modifiez sa valeur en “yes”. Sauvegardez et redémarrez votre émulateur, et le voila rapide et tout à fait utilisable !

Protips©: Dans cette partie, vous pouvez également ajouter la propriété “Keyboard support” et mettre sa valeur à “yes” pour pouvoir utiliser votre clavier pour remplir un champ de formulaire par exemple.

Attention…

N’oubliez pas ! Vous devez tester votre application sur plusieurs smartphones pour vous assurez qu’elle fonctionne sur différentes résolutions, différents matériels. Et rappelez-vous que les smartphones ont moins de batterie, moins de bande passante, … que votre ordinateur.

blog comments powered by Disqus