Cyril Mottier

“It’s the little details that are vital. Little things make big things happen.” – John Wooden

Présentation d'Android

Après avoir étudié la procédure d’installation du SDK Android, il peut être intéressant d’expliquer ce qu’est réellement Android. A vrai dire, je pense qu’il aurait en fait été préférable de faire cette présentation générale dans un premier temps et d'ensuite parler des outils d'aide au développement d'applications Android. La tradition le prouve : “Mieux vaut appâter le client avant de lui vendre le produit!”.

Cet article a pour objectif de montrer aux débutants ce que signifie le terme Android mais également de corriger/améliorer les connaissances des développeurs.

Le terme Android est le nom donné à la pile applicative conçue par Google et spécialement optimisée pour les appareils mobiles. Contrairement à une idée reçue (qui doit être due à l'utilisation du terme abusif “Android” pour désigner le framework), cette pile applicative n'est pas seulement composée d'applications et d'un framework de développement. Android est en réalité un ensemble de technologies allant d'un niveau de la machine (système d'exploitation) à un niveau plus élevé (applications).

La page de présentation sur le site des développeurs Android donne un très bon aperçu de ce que contient la pile applicative Android. Malheureusement, cette description n'est disponible qu'en anglais. Je vais donc la détailler par la suite :

Il peut être intéressant d'analyser rapidement ce schéma car il donne l'ensemble des fonctionnalités fournies par Android :

Applications

Android est fourni avec un ensemble de programmes de base (dites aussi applications natives) permettant d'accéder à des fonctionnalités telles que les émails, les SMS, le calendrier, les photos, les cartes, le web, etc. Ces applications sont développées à l'aide du langage de programmation Java. Pour l'utilisateur lambda, cette couche est la seule accessible et visible.

Il convient également de noter que ces applications sont développées par Google et donc POUR Google. Le calendrier va, par exemple se synchroniser avec Google Calendar alors que les cartes seront issues de Google Maps. Malgré cette position quelque peu dominante, Google précise tout de même que ces applications peuvent tout à fait être supprimées par l'utilisateur (qui maitrise un minimum l'informatique) qui le souhaite (même l'application “Home” - équivalent de l'explorer sous Windows - peut être modifié).

Le framework

Android laisse les développeurs créer leurs propres applications. Pour ce faire, les programmeurs peuvent accéder aux mêmes APIs que celles utilisées par les applications natives d'Android. Pour simplifier : si vous souhaitez développer, comme moi, sur le système Android, c'est à ce niveau que vous viendrez vous “placer”.

Les bibliothèques

En interne, Android inclut un ensemble de bibliothèques C/C++ utilisées par de nombreux composants de la plateforme Android. Ces bibliothèques sont en réalité accessibles au développeur par l'intermédiaire du framework. En effet, le framework Android effectue, de façon interne, des appels à des fonctions C/C++ (plus rapides à exécuter). N'oubliez tout de même pas que le framework vient également faciliter le développement en fournissant une architecture simple et conçue dans une optique de réutilisabilité. La liste ci-dessous énumère quelques-unes de ces bibliothèques :

  • Bibliothèque système C - implémentation (dérivée de BSD) de la bibliothèque standard C (libc), optimisée pour les systèmes Linux embarqués

  • Bibliothèques multimédia - basées sur l'OpenCORE de PacketVideo, elles permettent le support de nombreux formats audio et vidéo tels que MPEG4, H.264, MP3, AAC, AMR, JPG and PNG (la liste complète est disponible ici - en anglais)

  • Surface Manager - permet l'accès au sous-système d'affichage

  • LibWebCore - navigateur internet (sera probablement remplacé, à terme, par Google Chrome ou une version allégée)

  • SGL - moteur graphique 2D

  • Bibliothèques 3D - implémentation basée sur OpenGL ES 1.0 APIs

  • FreeType - rendu des polices de caractères

  • SQLite - base de donnée légère et puissante

Le moteur d'exécution Android

Chaque application Android tourne dans son propre processus et avec sa propre instance de machine virtuelle Dalvik (Dalvik VM). Dalvik VM a été conçue pour optimiser l'exécution multiple de machines virtuelles. Pour finir, la Dalvik VM repose sur le noyau Linux qui s'occupe des fonctions telles que les threads ou la gestion bas-niveau de la mémoire.

Noyau Linux

Android repose sur un noyau Linux (version 2.6) qui gère les services système comme la sécurité, la gestion mémoire, la gestion des processus, la pile réseau et les pilotes. Il agit également comme une couche d'abstraction entre le matériel et la pile logicielle.