Voulant tester à nouveau le développement Android, j’ai décidé de ressortir le kit de développement installé sur ma Gentoo.
J’ai remarqué qu’IDEA proposait maintenant un plugin pour le dev android gratuit dans l’édition comunity et j’ai donc profité de l’occasion pour le télécharger en version 11 (ma licence full s’arrêtant à la version 10…).
Par contre, en voulant lancer l’appli générée sur l’émulateur, j’ai constaté que le CPU (du moins 1 coeur de CPU) était pris à 100% et que l’émulateur était plutôt inutilisable (2-3 secondes de réponse pour chaque action telle qu’un click, un caractère entré…). Que ça soit en utilisant l’image ARM ou la x86, le problème persiste.
Les explication fournies sur le tracker d’issue Android permettent de gagner un peu en rapidité mais chez moi, l’émulateur met facilement 5 minutes à ce lancer et reste toujours très peu utilisable, même avec ces astuces.
En cherchant un peu, je suis tombé sur un projet permettant de faire fonctionner correctement Android avec une architecture x86 et proposant surtout des images VirtualBox: Buildroid.
Autant dire que ça change de l’émulateur fourni dans le SDK android. C’est nettement plus utilisable du point de vue fluidité. Voici comment se passe l’installation (VirtualBox doit être installé et configuré):
- Télécharger une image VirtualBox sur http://www.buildroid.org/blog/?page_id=121. J’ai choisi la version 4.0.3p (phone).
- L’importer depuis VirtualBox (File -> Import Appliance)
- Une fois l’image importée, il faut configurer le réseau afin de pouvoir se connecter sur la VM et déployer ses applications. Cliquer sur Settings -> Network -> Advanced -> Port forwarding et choisir un port a rediriger de votre machine vers le port « dev/debug » (5555 par défaut) de la VM Android
- Vous pouvez maintenant lancer la VM en clickant sur « Start » dans VirtualBox.
- Après quelques secondes déjà la VM est démarré et est déjà beaucoup plus fluide. L’utilisation CPU (toujours 1 coeur), est à environs 3-5% quand on ne fait rien sur la VM, ça change des 100% !
Nous avons maintenant une VM fonctionelle, voici comment l’utiliser depuis intelliJ.
- Créez votre projet en utilisant l’utilitaire proposé par le plugin
- Dans la configuration Run/Debug, choisir « Show chooser dialog«
- Connecter adb (depuis un terminal) :
adb connect localhost
- Lancer l’application depuis intelliJ et choisir la connection proposée
- Voilà, votre application devrait être deployée sur la machine virtuelle VirtualBox.
Pour des configurations avancées de la VM, vous pouvez jeter un oeil sur http://keyable.blogspot.ch/2012/06/setup-hardware-opengl-for-linux-android.html (Opengl).
Les contrôles de base sur la VM:
- Retour : Esc
- Eteindre le téléphone : End
- Bouton home du téléphone : Home
Petite précision tout de même: la plupart des applications devraient fonctionner sans problème dans l’émulateur. Par contre, dès qu’il s’agit d’utiliser les senseurs, micros ou accélération hardware, il se peut fortement que l’application ne fonctionne pas. Pour ce genre d’application, un smartphone « de dev » reste la meilleure option.