URL: https://linuxfr.org/news/android-presque-partout Title: Android presque partout Authors: Nÿco Benoît Sibaud, SidStyler, xunfr, antistress, ZeroHeure, baud123, SlowBrain, Davy Defaud, Florent Zara, bubar🦥 et Xavier Teyssier Date: 2013年02月16日T20:04:03+01:00 License: CC By-SA Tags: android, dalvik, sailfish_os, opensuse et ubuntu Score: 50 Quand on parle d'Android (pas androïde), smartphones et tablettes viennent à l'esprit en premier, mais aussi télévisions, autoradios, consoles de jeux, montres, satellites, et (bientôt) lunettes et autre « informatique vestimentaire », l'environnement de Google est sur tous les fronts. Mais qu'en est-il de faire tourner Android sur nos bonnes vieilles machines de bureau (Linux, Mac OS X, Windows), ou bien d'autres systèmes d'exploitations (Tizen, BlackBerry, Sailfish, webOS) ? Voici donc un petit panorama de ce qui existe à l'heure actuelle, avec plus ou moins de maturité et de liberté. ---- [SDK de Android](http://developer.android.com/sdk/index.html) [Android-x86 Project](http://www.android-x86.org/) [AndroVM](http://androvm.org/) [BlueStacks](http://www.bluestacks.com/) [BlackBerry 10](http://global.blackberry.com/blackberry-10.html) [OpenMobile's Application Compatibility Layer (ACL)TM](http://openmobileww.com/products.php) [Windory (ex-WindowsAdroid)](http://www.socketeq.com/) [Android-IA](https://01.org/android-ia/) ---- ## Introduction, installation directe d'environnements utilisateur sur le matériel Ici, on parle d'installation d'un environnement utilisateur en usine ou par l'utilisateur, directement sur le matériel, sans passer par une couche d'émulation, compatibilité ou virtualisation. ### Distributions de bureau classiques Voyons - pour commencer, et à titre de comparaison - comment se compose très schématiquement une distribution « classique » pour ordinateur de bureau : - Une architecture matérielle sur laquelle repose le système : très largement x86, mais il existe des machines ARM - Un noyau : Linux ou BSD (ou autre...) - Une couche applicative contenant une interface graphique et des applications : des _daemons_, une environnement de bureau GNOME ou KDE majoritairement (ou autres environnement, dont les nombreux _forks_)  ### Distributions Android À l'image d'une distribution « classique » pour ordinateur de bureau, l'architecture d'Android se compose notamment et de manière très similaire des éléments suivants : - Une architecture matérielle sur laquelle repose le système directement : ARM le plus souvent (mais il existe certains appareils x86 supportés via différentes initiatives évoquées ci-après) - Un noyau : Linux - Une couche applicative contenant une interface graphique et des applications : Dalvik ou ART (JVM simplifiées), un lanceur ou bureau, des services et applications Une des particularités de la couche applicative d'Android concerne la machine virtuelle Dalvik ou ART sur laquelle repose la majeure partie des applications Android, et permettant d’exécuter des programmes écrits en Java.  ### Comparaison et possibilités Ainsi, nous pouvons considérer les distributions CyanogenMod, AOKP, MIUI, Paranoid Android et Omni ROM comme des distributions « classiques » de bureau au même titre qu'Ubuntu, Fedora, OpenSUSE, Debian, FreeBSD, et al. Par conséquent, il serait techniquement possible de : * porter une distribution Android sur d'autres matériels ; * porter, émuler ou virtualiser la machine virtuelle Dalvik sur d'autres noyaux et matériels ; * porter ou émuler les services et applications Android sur d'autres OS. ## Différentes solutions de bureau Les environnements de bureau et mobiles sont différents par nature, de par la taille d'écran évidemment, mais également l'interface utilisateur multi-tactile contre interfaces physiques (clavier, souris et _trackpad_), ainsi que le système graphique utilisateur (fenêtres, notifications, magasins d'applications, etc.). ### Émulateur Android L'émulateur Android, qui est livré avec le SDK, tourne sous Linux/BSD, Mac OS X et Windows. C'est libre, développé et maintenu par Google. Il est critiqué pour être assez lourd et assez peu flexible. La plupart des développements utilisent cet émulateur. Il présente un dessin d'appareil afin de plonger l'utilisateur un peu plus dans son environnement.  ### Android-x86 et AndroVM (Buildroid) Le projet [Android-x86](http://www.android-x86.org/) - comme son nom l'indique - porte Android sur un matériel de type x86. [AndroVM](http://androvm.org/) (ex-Buildroid) est une distribution Android permettant de faire tourner Android sur VirtualBox (ou autre outil de virtualisation), devenue [genymotion](http://www.genymotion.com/) Cela a un certain nombre d'avantages par rapport à un Android-x86 installé directement sur le matériel, ou bien même sur l'émulateur Android venant avec le SDK : il est bien plus flexible et permet par exemple des automatisations plus poussées, comme les déploiements et tests. Il est également utilisé pour explorer à la main et faire des _[smoke tests](http://en.wikipedia.org/wiki/Smoke_testing)_ (premiers tests) d'applications. L'intégration système n'est bien évidemment pas au rendez-vous, quelques astuces sont utilisées, comme l'intégration de la souris de VirtualBox, qui ne remplace pas le multi-tactile.  ### BlueStacks BlueStacks a porté un environnement d'exécution Android sur Mac OS X et Windows, sur du matériel x86. Ce qui permet d'avoir des applications Android sur une machine classique, mais dans un environnement spécifique, donc un peu comme VirtualBox, mais spécialisé sur Android. BlueStacks a également travaillé sa solution pour la rendre compatible avec Windows RT, donc sur ARM. Ainsi on peut faire tourner des applications Android sans traduction d'instructions. BlueStacks est propriétaire. Il n'est pas souple du tout et est orienté utilisateur final, pas développeur/testeur. Il souffre d'une mauvaise intégration système, bien que plus spécifique donc plus poussé qu'un AndrodVM/Genymotion virtualisé. Sans doute utile aux _smoke tests_, et bien évidement pour utiliser tant que faire se peut des applications Android non-multi-plateformes.  ### Windroy (ex-WindowsAndroid) Similaire à BlueStacks, Windroy est très graphique : c'est Android optimisé sur noyau Windows, pas sur une machine virtuelle. Cela permet de tester des applications gourmandes, y compris en ressources graphiques. ## Différentes solutions mobiles ### BlackBerry 10 Le tout nouveau système d'exploitation mobile BlackBerry 10 (BB10), qui repose sur un noyau QNX, donc Unix-like et surtout POSIX, propose un environnement d'exécution des applications Android compatible Android 2.3 Gingerbread sur ARM. Là, nous ne sommes plus sur une machine de bureau, mais sur un téléphone et une tablette. BlackBerry 10 et son noyau QNX sont propriétaires, l'émulateur apparu avec la tablette BlackBerry PlayBook - soit bien avant BB10 - est propriétaire également. C'est supposé être la solution la mieux intégrée, elle souffre hélas de défauts de jeunesse et d'un manque certain d'intégration système, sachant que l'on est tout de même sur un environnement multi-tactile, son environnement « naturel ». C'est une solution essentiellement mise en place par le constructeur dans le but de récupérer des applications rapidement des applications sur sa toute nouvelle plateforme. Il est alors juste nécessaire de refaire le packaging de l'applications pour qu'elle fonctionne potentiellement sous BlackBerry 10. Le portage - théoriquement presque automatique - ne se fait pas sans heurt dans la pratique, et seules certaines applications passent véritablement bien sur la plateforme. Beaucoup de portages fonctionnent de façon dégradée et sont décriées par la communauté naissante BB10. ### ACL : Application Compatibility Layer Le produit Application Compatibility Layer (ACL) de OpenMobile, permet de faire tourner des applications Android sur : * MeeGo * Tizen * Windows * WebOS * Ubuntu Il s'agit ici de la machine virtuelle Dalvik d'Android qui est portée sur ces OS de bureau et mobiles. Ainsi OpenMobile clame 100 % de compatibilité et des performances natives. Pour être tout à fait honnête, les OS MeeGo, Tizen, webOS et Ubuntu sont tous basés sur le noyau Linux, comme Android. Attention, contrairement à ce que le nom OpenMobile pourrait laisser croire, il semblerait que le code source de ACL ne soit pas disponible.  ### Android-IA Android-IA est le port fait par Intel d'Android sur architecture Intel mobile, son nom est "Android on Intel Architecture". C'est une sorte de continuité de Android-X86 par Intel, qui fournit de son côté un SDK et un émulateur, et contribue tant qu'il peut à AOSP (le code source d'Android, une fois livré par Google). Android-x86 se concentre plus sur le bureau Les tablettes/laptops sur lesquelles tourne Android-IA sont [pour le moment](https://01.org/android-ia/documentation/devices) : Acer Iconia W700, Lenovo X220T, Lenovo X230T et Samsung XE700T qui sont toutes des solutions à base de HD Graphics 3000 (Sandy Bridge). Cela remplace le système pré-installé (produit par Redmond). ### Infraware Polaris App Player Polaris App Player semble mort. C'est une solution proche de ACL, se positionnant comme environnement d'exécution d'applications Android sur plateformes mobiles. C'est édité par Infraware, Inc., l'éditeur entre autre de Polaris Office. ## Critiques La plupart de ces solutions ont montré l'inconvénient de lenteurs notables, surtout lorsque les applications sollicitent les capacités graphiques de la machine, dû principalement à des couches logicielles intermédiaires, mais aussi à des traductions d'instructions machines. De plus, bien que cela arrive lentement, les machines de bureau ne sont majoritairement pas tactiles. Le projet Butter de Google a apporté beaucoup d'optimisations graphiques dans Android 4.2 Jelly Bean et le projet Svelte des optimisations de consommations de ressources sur Android 4.4 pour les appareils faibles en puissance. Cela porte ses fruits sur les tablettes et smartphones Android, mais moins sur ces solutions tierces. Au niveau de l'intégration système, ce n'est également pas la panacée. Cela est dû principalement à la nature des interfaces d'entrée : le multi-tactile contre clavier et souris. Dans toutes ces solutions, vous trouverez peut-être votre bonheur, en fonction de votre utilisation, si vous n'êtes pas trop exigeants. ## Et vous ? Et vous, vous avez d'autres solutions innovantes dans vos cartons, garages et laboratoires pour faire tourner Android et/ou ses applications dans d'autres environnements ?