Si Android, le système d’exploitation mobile de Google qui équipe de nombreux appareils aujourd’hui, a su gagner en popularité au fil des ans, certains mythes à son sujet ont la vie dure. Je vous propose donc un article explorant en détail la plupart des fausses idées préconçues à propos d’Android qu’on entend ou lit régulièrement et auxquelles je ne pouvais pas rester indifférent.

Mythe 1: Android n’est jamais le meilleur choix pour le haut de gamme

Haha, You are poor!

Lorsqu’une personne demande conseil pour l’achat d’un smartphone, on entend trop souvent “Si tu as le budget, achète un iPhone. Autrement, rabats-toi sur Android”. Si l’iPhone reste un appareil mobile de référence, il n’est pas le téléphone le plus adapté à tout le monde, loin de là. Les téléphones Android dont le prix avoisine celui de l’iPhone n’ont généralement pas grand chose à lui envier, et sont souvent légèrement plus avancés techniquement. Android n’est donc pas réservé aux “pauvres”.

Pour prendre un exemple concret, à l’heure où j’écris ces lignes, le Samsung Galaxy S4 et le HTC One représentent le haut de gamme Android et sont des téléphones bien finis et très véloces, disposant d’écrans supérieurs en taille et affichant environ 2 fois plus de pixels qu’un iPhone 5. Ils prennent également des photos de meilleure qualité que ce dernier. Pour le reste, c’est une question de préférence personnelle de l’utilisateur car chaque système est différent mais Android a certainement son faire-valoir face à iOS.

Mythe 2: Android est un système plus fragmenté que les autres

Android fragmentation

Ce mythe est bien loin de la réalité car Android est dans les faits le système d’exploitation mobile le moins fragmenté et le plus universel à l’heure actuelle.

C’est un système diversifié mais pas fragmenté: il a été conçu dès le départ pour fonctionner sur un grand nombre d’appareils aux caractéristiques variées.

Qu’est-ce que la fragmentation, la vraie? C’est quand un nouveau système amène des fonctions qui cassent la compatibilité avec la génération précédente. À cet égard, voici un petit classement des systèmes d’exploitation mobiles les plus fragmentés à l’heure actuelle et pourquoi:

1. Symbian. Chaque nouvelle version, même mineure, était incompatible avec la précédente ce qui obligeait les développeurs à fournir une version différente de leur application pour chaque version du système. Symbian a maintenant disparu.
2. BlackBerry OS. La version 10 est totalement différente et incompatible avec les précédentes. Quand la version 7 (optimisée pour les écrans tactiles) est sortie durant l’été 2011, aucun appareil existant n’a pu être mis à jour.
3. Microsoft Windows Phone. Windows Phone 8 est un nouveau système incompatible avec Windows Phone 7 et aucun appareil Windows Phone 7 n’a pu être mis à jour vers Windows Phone 8. Les téléphones Windows Phone 8 sont capables de faire fonctionner les applications Windows Phone 7 dans un mode de compatibilité, mais les applications ciblant Windows Phone 8 ne fonctionnent pas sur Windows Phone 7. Pire, les tablettes et PC utilisent un troisième OS radicalement différent des deux autres: Windows 8. Les développeurs doivent maintenant créer 3 versions distinctes de leur application pour qu’elle soit compatible avec les 3 plates-formes, ou en créer 2 et abandonner soit les utilisateurs de Windows Phone 7, soit les nouvelles fonctionnalités de Windows Phone 8.
4. Apple iOS. À la sortie de l’iPhone 5, l’ensemble des applications existantes affichait des bandes noires sur son nouvel écran plus allongé que sur les précédents modèles, obligeant les développeurs à adapter dans l’urgence toutes leurs applications. Une adaptation pas toujours évidente puisque jusqu’alors, la création d’écrans pour iPhone consistait à plaquer des éléments sur cette surface aux proportions bien connues, qui soudain est devenue variable d’un modèle à l’autre. Apple introduit régulièrement des nouvelles fonctions dans son SDK d’applications qui, lorsqu’on choisit de les utiliser, cassent la compatibilité avec les versions précédentes d’iOS. Heureusement les appareils sont mis à jour vers la dernière version d’iOS pendant 2 à 3 ans après leur sortie, mais cela signifie aussi que les anciens appareils ne peuvent plus du tout faire fonctionner les applications qui sortent actuellement.

En comparaison, Android fragmente très peu: la base du système est restée la même et il existe de très nombreuses bibliothèques de compatibilité permettant d’apporter les nouveautés aux anciennes versions du système. Il est également très simple sur Android de créer des applications utilisant des fonctions disponibles uniquement sur les dernières versions du système tout en restant compatible avec les anciennes versions.

Apple aime rappeler que peu d’appareils Android font tourner la toute dernière version du système d’exploitation de Google mais en réalité la plupart des utilisateurs Android s’en moquent car ils ont encore accès à la quasi-totalité des applications du Play Store ! Pour vous donner un autre exemple concret, le HTC Hero qui est l’un des premiers téléphones Android sortis sur le marché en 2009 et qui a été mis à jour officiellement vers Android 2.1 est encore capable d’installer un très grand nombre d’applications actuelles. En installant une mise à jour Android 2.2 officieuse, le nombre d’applications récentes installables sur cet ancêtre devient encore plus élevé. Comparé à cela, je possède encore un vieil Apple iPod Touch limité à iOS 4 qui n’est plus capable d’installer aucune application aujourd’hui. Je m’en sers maintenant comme réveil-matin.

À la conférence Google I/O 2013 a été annoncée la disponibilité immédiate d’un ensemble de nouveaux services Google pour les développeurs. Ces services ont été déployés automatiquement sur tous les appareils Android disposant au minimum de la version 2.2 (mai 2010), soit 98% du marché. Encore un bel exemple de non-fragmentation.

Sachant cela, on peut difficilement affirmer qu’Android est une plate-forme qui ne tient pas sur la durée.

Le terme “fragmentation” est parfois utilisé à tort pour parler du fait que certains appareils de certains constructeurs ont des bugs et ne se comportent pas comme les autres. Dans la pratique c’est effectivement parfois le cas mais c’est rarement un problème majeur, et c’est au constructeur à corriger le problème via une mise à jour logicielle. La plupart du temps, ces petits bugs apparaissent lors d’une personnalisation avancée de l’aspect visuel d’une application sur un appareil où le constructeur a lui-même personnalisé l’interface graphique du système de façon peu orthodoxe (en particulier sur les téléphones plus anciens de Sony et Samsung). Développer un logiciel afin qu’il fonctionne au mieux sur de nombreux appareils différents demande certainement plus de rigueur que développer sur une plate-forme fermée comme iOS ou Windows Phone, mais c’est le prix à payer pour cibler une plate-forme à la fois flexible et évolutive.

Mythe 3: Les versions officieuses d’Android (ROMs personnalisées) sont réservées à l’usage des experts

Nerd couple

Les ROMs personnalisées permettent d’installer une version plus récente d’Android que celle fournie par le constructeur afin d’allonger la durée de vie d’un appareil. Elles constituent généralement une option séduisante pour “ressusciter” un appareil dont la garantie a expiré.

L’installation initiale d’une ROM personnalisée est effectivement réservée aux bidouilleurs avertis et peut être plus ou moins difficile en fonction des modèles. C’est pourquoi je vous conseille de déléguer cette tâche à l’un(e) de vos ami(e)s passionné(e) d’informatique: vous en connaissez tous forcément un ou une.

Par contre, une fois l’installation effectuée, votre appareil restera tout aussi simple d’utilisation qu’avant et vous n’aurez pas à faire de démarche particulière pour en assurer le bon fonctionnement. L’important est de demander qu’on vous installe une version stable et 100% fonctionnelle du système, et pas quelque chose d’expérimental. La référence dans le domaine reste les versions stables de la ROM Cyanogenmod qui est disponible pour une gamme de plus en plus étendue d’appareils. Attention, je parle bien des versions qu’on peut télécharger sur le site officiel et qui sont labellisées stables, pas les dérivés pas toujours au point qu’on peut trouver sur certains forums pour des appareils qui ne sont pas supportés officiellement par cette ROM.

Avec une version stable d’une ROM officieuse (si disponible pour votre modèle), votre appareil fonctionnera aussi bien voire mieux qu’avec la version d’origine et vous aurez l’impression d’avoir un nouveau téléphone. Attention, je ne suis pas en train de vous dire que vous devez à tout prix changer le logiciel du constructeur: si votre version actuelle vous convient et vous donne déjà accès à suffisamment d’applications (vu qu’Android est peu fragmenté), il est inutile de mettre à jour. Si vous décidez de sauter le pas, sachez que l’opération est toujours réversible au cas où vous désirez revendre l’appareil ou le renvoyer au service après-vente.

Notez aussi qu’un appareil Android peut souvent être “débrandé”: il s’agit d’installer une version universelle et officielle du logiciel du constructeur en lieu et place d’une version propre à un opérateur téléphonique ou à un pays. Ceci vous permettra à l’avenir d’obtenir les mises à jour automatiques du constructeur dès qu’elles sont disponibles et ainsi bénéficier d’un meilleur support pour votre appareil.

Mythe 4: Les appareils Android sont peu sécurisés et ont besoin d’un antivirus

John McAfee in his underwear

On lit souvent dans la presse: “Attention, un nouveau virus X a fait son apparition sur Android”. Un peu comme sur PC, sauf qu’Android est quand même beaucoup plus sécurisé que Windows. Les virus informatiques ne s’attrapent pas comme un rhume. Sur Android, pour qu’un virus puisse faire du mal à votre appareil ou à vos données, il doit être installé via une application. Si vous ne téléchargez pas d’application pirate depuis des sites douteux mais que vous n’installez que des applications éprouvées depuis leur source officielle (dans la quasi-totalité des cas: le Play Store), vous ne risquez rien. Si vous n’installez jamais d’application, vous ne risquez rien non plus.

D’autre part, chaque application est cloisonnée et n’a accès qu’à ce que vous lui avez permis d’accéder. En effet, quand vous installez une application sur votre appareil, la liste des permissions demandées par cette application apparaît clairement à l’écran avant l’installation et vous avez le droit de refuser de l’installer. Par exemple, si un jeu demande l’accès à votre carnet d’adresses ou demande à envoyer des SMS en arrière-plan, il y a probablement de quoi s’inquiéter et il est conseillé de ne pas l’installer.

Certaines applications ne sont pas malveillantes à proprement parler mais sont simplement mal programmées avec pour effet de décharger votre batterie ou de consommer beaucoup de données sur votre forfait 3G alors qu’elles ne sont pas actives au premier plan. Si vous constatez ce genre de problème, vous pourrez facilement les identifier car Android dispose d’un écran affichant les statistiques de consommation d’énergie par application, et également depuis Android 4 un écran reprenant la consommation de données de chaque application.

Une application ne peut pas non plus faire de dégâts permanents au système (sauf si votre appareil est “rooté” et que vous avez autorisé l’accès root à l’application malveillante – ce qui est réservé aux experts) et une simple désinstallation suffira à éradiquer ses effets.

Venons-en maintenant aux antivirus pour Android, qui sont d’après moi l’une des plus grosses escroqueries sur ce système. Un antivirus n’a pas plus de droits qu’une autre application et il ne peut pas agir de façon proactive comme un antivirus sur PC qui s’installe au coeur de votre Windows. La seule chose que puisse faire un antivirus sur Android c’est accéder à la liste des applications installées (après que vous lui en ayez donné la permission) et comparer cette liste à une liste noire d’applications classées comme malveillantes par nature par l’éditeur, ou encore déterminer si une application est malveillante ou pas en regardant quelles permissions lui sont accordées (sans même savoir à quoi elle sert). Analyser le code d’une application installée ne fait pas partie des permissions possibles sur Android et donc un antivirus ne peut en aucun cas réellement détecter la trace d’un code malveillant sur votre appareil.

J’ai déjà pu constater que certaines applications Android tout-à-fait bénignes sont aléatoirement détectées comme dangereuses par des antivirus comme Avast, y compris des applications développées par des collègues à moi (et ayant accès au code source, je peux vous certifier que ces applications ne comportaient pas la moindre trace de code malveillant). L’antivirus peut voir la liste des permissions accordées à vos applications installées, mais il ne peut pas savoir si ces permissions sont justifiées ou pas s’il ne sait pas quelles sont les fonctions de l’application. Par exemple, il est légitime pour une application qui diffuse de la radio en streaming d’empêcher le téléphone de passer en veille afin que la musique puisse continuer à jouer lorsque vous verrouillez l’écran, tout comme il est légitime pour une application de téléphonie sur IP d’accéder à votre carnet d’adresses pour pouvoir vous suggérer des numéros à appeler.

Par contre, les applications antivirus elles-mêmes demandent la plupart du temps l’intégralité des permissions possibles sur Android, y compris des permissions qui n’ont à priori rien avoir avec de la détection de virus: modifier vos contacts et votre journal d’appels, envoyer des SMS ou appeler des numéros de téléphone, lire votre historique web. C’est par exemple le cas des antivirus Avast et McAfee pour ne pas les citer. Cet excès de permissions en font des applications potentiellement plus dangereuses que l’ensemble des autres applications du Play Store. La preuve en est que si vous installez plusieurs applications antivirus concurrentes sur votre téléphone (ce que je vous déconseille bien entendu), vous pourrez constater que la plupart du temps elles se détectent l’une l’autre comme des menaces.

Mythe 5: Les applications de type “task killer” ont une réelle utilité sur Android

Android target

Certaines personnes croient encore qu’installer un “task killer” (ou “tueur de tâches”) est utile et bénéfique pour leur appareil, afin que les applications “fonctionnent mieux” grâce à “plus de mémoire” ou encore que ce type d’applications permet d’augmenter l’autonomie de la batterie. Tout cela est entièrement faux: au mieux elles fourniront un effet placebo, au pire elles feront baisser l’autonomie de la batterie et entraveront le bon fonctionnement des applications. Voici pourquoi.

Android gère déjà la mémoire de votre téléphone et de votre tablette de façon intelligente et optimale. Lorsque vous démarrez une application et qu’il n’y a pas assez de mémoire disponible pour la faire fonctionner, Android va automatiquement tuer une application précédemment démarrée afin de libérer la mémoire nécessaire. Il choisira l’application ou le service qu’il va tuer de façon beaucoup plus avisée que n’importe quel “task killer” et selon différents critères, dont principalement la durée d’inactivité en arrière-plan. Lorsque vous désirez rebasculer vers une application qui a été tuée, le système va la redémarrer puis restaurer son état. Tout ceci fait partie du fonctionnement normal du système et se déroule de façon totalement transparente pour l’utilisateur qui n’a pas à s’en soucier.

Les applications tueuses de tâches nuisent au bon fonctionnement du système en permettant de tuer arbitrairement et manuellement des applications ou services alors que cela n’est pas nécessaire.

Libérer beaucoup de mémoire ne permet pas aux applications de mieux fonctionner. Dans Android la mémoire utilisable par une application est limitée donc elle ne dépassera de toutes façons pas un certain seuil. Si la mémoire disponible est inférieure à ce seuil, le système en libérera de façon proactive en tuant un ancien processus donc une application aura toujours suffisamment de mémoire pour fonctionner normalement tant qu’elle est à l’avant-plan. De plus la mémoire est faite pour être utilisée à son maximum, car garder une application ou un service inactif en mémoire ne consomme pas plus d’énergie mais permet par contre de relancer ce processus beaucoup plus rapidement et efficacement.

Utiliser un task killer peut nuire à l’autonomie de la batterie car s’il tue de façon répétée un service d’arrière-plan qui est en réalité utilisé fréquemment par le système, Android devra à chaque fois le redémarrer ce qui consommera plus d’énergie. Et si vous ne laissez pas une chance à ces services d’arrière-plan d’effectuer leur travail, les applications liées risquent fort de ne pas se comporter comme prévu.

Si vous avez un vrai problème d’autonomie lié à un quelconque logiciel sur votre appareil, le task killer n’y apportera jamais de solution. Par contre, l’écran de statistiques de consommation de la batterie dans les options vous permettra d’identifier une potentielle application mal conçue qui consomme trop d’énergie. Il vous suffira de la désinstaller pour résoudre le problème.

Mythe 6: Les applications Android sont lentes car écrites en Java

Not sure if a slow computer... or just Java

Terminons en beauté avec un mythe assez technique basé sur plusieurs idées fausses.

Tout d’abord, il faut distinguer le langage de programmation Java de la plate-forme Java.

Android n’utilise pas la plate-forme Java officielle d’Oracle donc il est déjà futile de les comparer. Android a son propre environnement d’exécution optimisé pour appareils mobiles nommé Dalvik. S’il est vrai que les performances brutes d’exécution de code de Dalvik ne brillaient pas à ses débuts, à partir de la version 2.2 et l’intégration d’un compilateur JIT les choses se sont fortement améliorées et le code s’exécute 2 à 5 fois plus rapidement qu’auparavant selon les cas.

Il faut également relativiser l’impact des performances de Dalvik sur l’expérience utilisateur dans la mesure où le coeur d’Android est un ensemble de bibliothèques de code natif écrites en C donc très rapides, qui sont ensuite appelées par le code de haut niveau un peu plus lent dans Dalvik. Il est également possible pour les développeurs d’inclure leurs propres bibliothèques de code natif écrites en C dans leur application, pour y mettre du code spécialisé dont les performances sont critiques: codecs audio et vidéo, analyse d’image, etc.

Reste le langage de programmation de haut niveau à proprement parler. Google aurait pu inventer son propre langage mais a préféré opter pour Java afin de viser un large public de développeurs déjà familiers avec son usage. Cependant il ne faut pas perdre de vue que le développement d’une application mobile, quel que soit le langage de programmation utilisé, reste plus délicat que celui d’une application pour PC ou serveur et qu’il faut mettre l’accent sur la qualité et la rapidité du code. Dans le cas de Java sur Android, il faut en particulier veiller à réduire l’instanciation explicite ou implicite d’objets qui provoquent un travail accru du ramasse-miettes. C’est souvent le niveau de compétence du développeur qui fera toute la différence entre une application lente et une application rapide.

Ainsi s’achève cet article de démystification d’Android. Si vous connaissez d’autres mythes, n’hésitez pas à publier un commentaire ci-dessous. Merci pour votre lecture!

Christophe Beyls