• 30 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/13/20

Faites connaissance avec le système d'exploitation Android

Log in or subscribe for free to enjoy all this course has to offer!

Avant de développer nos premières applications en trois clics, de les commercialiser sur le store et de gagner des fortunes (rêvons un peu :ange:), je vous propose d'abord une rapide description de l'environnement dans lequel nous allons évoluer.

Vue d'ensemble de l'OS Android

Vous le savez probablement, Android est un système d'exploitation, édité par Google, que l'on trouve dans des téléphones, des montres, des télévisions ou des voitures. Ce dont vous n'avez peut-être pas conscience, c'est qu'il est lui-même basé sur un certain nombre de logiciels standards et Open Source, comme un noyau Linux, OpenGL, LibC ou Webkit :

Couches logicielles d'Android
Couches logicielles d'Android (Source : developer.android.com)

Ainsi, ce système est pensé pour être dans des devices connectés, proches de leur propriétaire (c'est important pour une bonne traçabilité de l'humanité :p) et indépendants de la marque de leur constructeur. Pour libérer les développeurs d'applications des contraintes liées au matériel, les applications classiques ne sont pas compilées en code natif mais en bytecode, qui sera ensuite compilé en code natif au moment de l'installation de l'application. La couche d'abstraction du matériel est également propagée à travers une API de haut niveau (Java). Nous verrons que, contrairement à Java, Android fournit une bibliothèque très riche permettant d'interagir facilement avec les composants matériels du device (Wifi, Bluetooth, GPS, accéléromètre, …).

Les langages de développement officiels sont Java et XML. Le code à proprement parler est décrit en Java, tandis qu'XML est utilisé pour la description de l'application, de son interface graphique et de ses éléments constituants. Cela permet une meilleure décomposition entre les informations et le code (le fond et la forme). On y gagne beaucoup en souplesse notamment pour la gestion du multilingue ou la mise à jour d'une interface graphique.

Les applications sont déployées via des fichiers .apk. Ces fichiers sont l'équivalent du .jar en Java. Ils contiennent l'application, ses dépendances et son Manifest.

Cloisonnement et confidentialité des données

En tant qu'utilisateurs avertis, vous savez également que la sécurité est importante dans l'écosystème Android. Nous ne voudrions pas qu'une application quelconque ait accès à l'intégralité de notre vie numérique :colere:. C'est pourquoi, contrairement à Java SE, chaque application est exécutée dans un bac à sable permettant son isolation.

Concrètement, Android est un OS multi-utilisateurs où chaque application est un utilisateur différent auquel est associé un UserID Linux unique. Chaque application est exécutée dans zone mémoire séparée. Ainsi, pour qu'une application ait le droit d'accéder à des ressources externes, nous verrons que celle-ci devra en faire la demande à l'utilisateur au moment de son installation. Nous verrons que c'est le Manifest de l'application qui contient les permissions requises et que les autres fonctionnalités sont bloquées par l'OS.

Développement orienté composant

Sous Android, une application est un ensemble de composants. Les composants peuvent être de quatre types :

  • Les activités (Activity) sont les éléments constitutifs principaux d'une application. Elles sont normalement associées à une vue graphique faite pour être affichée en plein écran. Pour simplifier, nous pourrons considérer qu'une activité se réduit à la notion de fenêtre. C'est le composant principal que nous manipulerons dans le cadre de ce cours.

  • Les services (Service) sont des tâches de fond n'étant pas associées à une vue utilisateur.

  • Les récepteurs de Broadcast (BroadcastReceiver) permettent à l'application d'être notifiée de certains événements (ex : batterie faible, l'écran a été tourné, ...) mais ne sont pas associés à une vue graphique comme le serait une Activité.

  • Les fournisseurs de contenu (ContentProvider) sont des composants permettant de gérer l'accès à des informations de manière centralisée, comme le fait le gestionnaire de contacts par exemple.

Puisque chaque application est exécutée dans un bac à sable différent, avec des permissions différentes, il n'est pas possible d'appeler directement un composant d'une autre application. Comment faire ?

La solution choisie est d'en faire la demande au système en lui déclarant son intention via un objet de type Intent.

Parmi les 4 types de composants constituant une application, 3 nécessitent un Intent  pour être lancé : les activités, les services et les récepteurs de Broadcast. Un Intent  peut contenir un appel explicite (le nom d'une classe) ou implicite (une action, une catégorie et des données). Ainsi, lorsque je clique sur un lien web depuis une application, celle-ci peut choisir de déclencher une intention avec l'action VIEW, la catégorie BROWSABLE  et l'URL en donnée associée. Le système lancera alors un navigateur Web pour terminer l'action. Si plusieurs applications installées se sont enregistrées sur cette action et cette catégorie, alors la liste de ces applications est proposée à l'utilisateur en lui demandant de choisir.

Parmi les actions possibles, la première que nous verrons sera l'action MAIN avec la catégorie LAUNCHER. Cette intention est générée lorsque l'utilisateur clique sur l'icône d'une application. C'est elle qui permet de lancer l'activité principale de l'application.

Sans plus attendre, je vous propose de découvrir Android à travers un premier exemple dans le chapitre suivant.

Example of certificate of achievement
Example of certificate of achievement