Publié le 1 mars 2010, modifié le 8 janvier 2024.
Par La Rédaction

Volet 1 : L’écosystème de développement Android

Publié le 1 mars 2010, modifié le 8 janvier 2024.
Par La Rédaction

Voici le 1 premier volet de 3 articles sur la plate-forme Android écris par Éoduard Mercier de Smart&Soft.Alors qu'Android continue d'entrer progressivement dans le champ lexical du grand public, nous allons nous intéresser à la méthodologie du développement d'applications sur ce système d'exploitation.

Mais au fait, qu’est-ce qu’Android ?

Android est avant tout un système d’exploitation, au même titre qu’iPhone OS, Windows Mobile, RIM OS, Palm Web OS : contrairement à ces derniers, le système d’exploitation n’est pas exclusivement destiné aux terminaux mobiles, car il est prévu qu’Android vienne équiper des éléments physiques comme des réfrigérateurs, des fours, des téléphones fixes, des ordinateurs de voiture, des smartbooks, des tablettes tactiles. Ce système d’exploitation est basé sur un noyau Linux, ce qui le normalise considérablement. De plus, ce système d’exploitation est gratuit et open-source, ce qui signifie que n’importe qui peut télécharger son code-source, le modifier et commercialiser des terminaux qui l’embarque : cette caractéristique n’est pas négligeable, et nous verrons pourquoi.

Il est promu depuis fin 2007 par un consortium appelé l’ Open Handset Alliance (OHA), dans lequel on retrouve désormais plus de 50 membres, des acteurs du monde des navigateurs GPS comme Garmin, des fondeurs de semi-conducteurs comme Qualcomm, Intel, ARM, des opérateurs télécoms comme Sprint, Vodafon, China Mobile, des constructeurs de terminaux mobiles comme HTC, ASUS, Acer, Samsung, LG Electronics, Sony Ericsson, des fournisseurs de services comme eBay, Google. Les secteurs industriel des acteurs sont complémentaires, ce qui assure à Android une cohérence, une légitimité et une force marketing et commerciale sans précédent. Android est loin d’être “la chose” de Google : il est nécessaire de le rappeler car la confusion est souvent faite, même si Google se charge de modérer et d’animer le projet du système d’exploitation, et controle en partie le modèle de distribution des applications.
De nombreux terminaux sont déjà commercialisés dans le monde : aujourd’hui, la part des smartphones équipés d’Android représente déjà le tiers d’iPhones vendus dans le monde. À titre comparatif, les analystes prévoient que le nombre de terminaux Android vendus courant 2012 aura dépassé la vente d’iPhones, et qu’Android va prendre la deuxième place en terme de nombre de smartphones, derrière Nokia.

Les terminaux Android disposent d’un navigateur Internet de dernière génération intégré, et d’applications pré-installées. À l’instar de RIM, Apple, Microsoft, Palm, Nokia, l’attrait d’Android est de permettre à des éditeurs de concevoir, de distribuer, voire de commercialiser des applications natives, spécialement conçues pour les système d’exploitation. Tout comme ses concurrents, Android offre une place de marché appelé “Android Market”, qui répertorie et classe les applications disponibles. Contrairement au modèle de l’iPhone, l’utilisateur n’est pas forcé de télécharger l’intégralité des applications depuis l’Android Market, et il existe des alternatives à l’Android Market, et qui plus est, un utilisateur peut installer une application s’il a accès à son fichier d’installation : cette option donne un avantage considérable à Android sur le marché B2B. Aujourd’hui, l’Android Market recense plus de 15.000 applications.

L’environnement de développement

Concentrons-nous sur le développement d’applications sur cette plate-forme. Pour développer une application installée pour Android, il est nécessaire de télécharger le kit de développement, qui est gratuit et appelé SDK Android. Peu importe le système d’exploitation dont le développeur dispose, s’il travaille sous Windows, Mac OS ou Linux, le SDK est disponible. Une fois ce kit de développement installé, il est déjà possible de lancer un émulateur sur l’ordinateur, qui reproduit via une virtualisation parfaite sous QEMU le fonctionnement d’un terminal : cet émulateur propose une interface graphique avec laquelle l’utilisateur peut interagir. Contrairement au simulateur de l’iPhone, le fonctionnement d’une application sur l’émulateur Android est strictement le même que sur un terminal physique. Il est même possible de simuler des appels téléphoniques, des SMS, simuler le fonctionnement du GPS, régler finement la bande passante réseau, la latence.

À ce stade, il n’est pas encore possible d’écrire du code-source de manière intégrée : cependant, Google propose un greffon destiné à Eclipse, qui permet de créer et de développer une application directement dans Eclipse. Eclipse est gratuit, est basé sur la plate-forme Java (multi plate-formes et gratuite) et ne pose aucune limitation concernant le système d’exploitation requis pour fonctionner, ce qui rend le développement sur Android disponible sur la très grande majorité des systèmes d’exploitation, et de surplus totalement gratuit. C’est ce même mécanisme retenu par Palm, qui permet d’intégrer de manière extrêmement fluide l’écosystème de développement Android à Eclipse. À noter qu’il est également possible de développer une application Android dans des environnements de développement populaires comme Intellij ou NetBeans. Une fois le SDK Android, Eclipse, et le greffon Eclipse pour Android installés, l’environnement de développement est prêt. Deux questions demeurent : suis-je bien qualifié pour débuter les développements, comment vais-je démarrer et me former ?

Les compétences requises

Quelles sont les compétences requises pour développer une application sur Android ? Le langage utilisé pour réaliser le développement est le Java, même s’il est possible d’interagir avec les bibliothèques Linux en natif via du code C. Une réponse simple consisterait donc à dire qu’il suffit de connaître le Java pour développer une application. Mais attention, pour tirer partie des fonctionnalités d’un système d’exploitation, il faut en connaître les mécanisme. Pour proposer une bonne ergonomie, il faut savoir ce qui est faisable, apprendre les règles et usages de l’interface utilisateur, il faut acquérir une culture sur les applications existantes, il faut bien intégrer qu’une application peut s’exécuter sur une très large gamme de terminaux qui ne disposent pas tous des mêmes caractéristiques techniques, des mêmes tailles d’écran. Pour proposer un graphisme attractif, il faut savoir adapter une charte graphique au look&feel d’Android, il faut savoir bien dissocier le fond de la forme : à la manière dont CSS permet de personnaliser le rendu d’une page HTML, Android propose un formalisme pour personnaliser l’interface graphique.

Donc, pour débuter, une bonne connaissance de Java est nécessaire. Ceux qui ne connaissent pas du tout Java doivent avoir acquis une bonne maîtrise de la programmation-objet, et vont devoir se mettre sérieusement à Java. Une compréhension des mécanismes de multi-threading va être très rapidement nécessaire. Ensuite, le maître-mot, c’est faire table rase sur ce que l’on a appris pour bien réapprendre : il faut oublier tout ce que l’on a appris en terme d’interface graphique, que ce soit concernant le développement d’applications web, ou que ce soit en ce qui concerne le développement d’applications desktop. Il est essentiel de comprendre les mécanismes du système d’exploitation, à savoir la notion d’intention, d’activité, la notification, les services, les alarmes, les fournisseurs de données, les répertoires dynamiques, les widgets… Ceux qui en ont les moyens ont tout intérêt à acheter un terminal Android et l’utiliser de manière quotidienne, afin d’accélérer l’immersion dans le monde Android. Les professionnels en devenir ont tout intérêt à acheter auprès de Google un terminal de développement, à choisir entre le G1 et le G2, afin de pouvoir bénéficier d’un terminal sur lequel ils vont pouvoir avoir un contrôle total, notamment en phase de debugging pas à pas.


Le support au développement

Le kit de développement Android étant disponible depuis fin 2007, il existe déjà une forte communauté de développeurs bien établie. Le fait qu’Android utilise Java comme langage de développement offre au développeur toute la communauté Java en support à ses questions sur le langage et ses APIs, certainement la plus grande communauté de développeurs. Le premier réflexe consiste à consulter le guide officiel de développement sur Android pour ce qui est de la documentation officielle, les articles techniques provenant du blog du site de développement Android, et des forums de discussion scindés en différents niveaux de connaissance. Dernièrement, Android a opté pour le service Stack Overflow comme site de support officiel pour les développeurs d’application. Google propose également des sessions de discussion par IRC une fois par semaine tous les jeudi (attention au décalage horaire !), pour ceux qui sont à la recherche d’une interactivité maximale. Afin de suivre les évolutions majeures du systèmes et profiter de dossiers approfondis sur des thèmes, il est conseillé de s’abonner au fil RSS du blog officiel d’Android.

Le kit de développement d’Android vient avec un lot important d’applications données en exemple, dont la fameuse “API Demos” que tout développeur devrait inspecter en détail, afin de bien appréhender les contrôles graphiques par défaut, ainsi que les mécanismes du système d’exploitation. Certaines applications Android sont données en ”open-source” par leur équipe de développement, donc pourquoi se priver de cette richesse de code-source qui pourrait s’avérer très instructif ? Une fois toutes ces sources officielles épuisées, il existe déjà pléthore de sites dédiés au développement : des sites internationaux comme AndroidCommunity (deux des tous premiers à avoir existé), des sites plus francophones comme FrAndroid, et bien entendu les moteurs de recherche restent des compagnons fidèles des développeurs. Enfin, les professionnels du développement Android ont une bible : le code-source du système d’exploitation lui-même.

En effet, Android étant open-source, il est possible de télécharger l’intégralité de son code-source et de le recompiler de bout en bout, puis de l’installer sur un terminal physique. Le code-source n’est pas composé que de Java puisque le Java n’est utilisé que sur les hautes couches applicatives, mais toute l’API Java du SDK Android est exposée en Java, ce qui permet au développeur de lire ce code-source, et même de pouvoir tracer pas à pas l’exécution d’une application dans Eclipse, tout en traversant les couches de l’API ! Si le développeur ne comprend pas le fonctionnement d’un contrôle graphique, un mécanisme de notification, le cycle de vie d’une activité, il saura tout s’il regarde dans le code-source. Mais attention, de nombreux développeurs seront rebutés devant l’étendue des APIs et le côté ardu de cette tâche !

Maintenant que nous avons fait nos premiers pas avec l’écosystème de développement sur Android, nous nous intéresserons dans un prochain volet aux différentes étapes de développement d’une application.

Lire aussi