Le système d'exploitation mobile Android

Android : l'OS mobile selon Google

  • Système d'exploitation (OS) mobile développé par Google
  • OS mobile le plus utilisé dans le monde
  • Android est à l'origine le nom d'une startup (créée en 2003) qui développait un firmware pour appareils photos
  • Google rachète la startup Android en 2005 et initie l'OHA en 2007
  • Le regroupement d'organismes Open Handset Alliance (OHA) favorise l'innovation sur les appareils mobiles
  • Android est open source et basé sur le noyau Linux
  • La conception de l'OS permet l'intégration de nombreux services Google (Gmail, Agenda, ...)
  • Le kit de développement Android et la boutique Google Play encadrent le développement et la distribution d'une application
  • Les différentes versions d'Android ont des noms de desserts suivant l'ordre alphabétique

Android : l'OS mobile selon Google

Prototype de Bugdroid

Historique des versions d'Android

Nom Version API Level
BASE 1.0 1
BASE_1_1 1.1 2
CUPCAKE 1.5 3
DONUT 1.6 4
ECLAIR 2.0 5
ECLAIR_0_1 2.0.1 6
ECLAIR_MR1 2.1.x 7
FROYO 2.2.x 8

Historique des versions d'Android

Nom Version API Level
GINGERBREAD 2.3
2.3.1
2.3.2
9
GINGERBREAD_MR1 2.3.3
2.3.4
10
HONEYCOMB 3.0.x 11
HONEYCOMB_MR1 3.1.x 12
HONEYCOMB_MR2 3.2 13

Historique des versions d'Android

Nom Version API Level
ICE_CREAM_SANDWICH 4.0
4.0.1
4.0.2
14
ICE_CREAM_SANDWICH_MR1 4.0.3
4.0.4
15
JELLY_BEAN 4.1
4.1.1
16
JELLY_BEAN_MR1 4.2
4.2.2
17
JELLY_BEAN_MR2 4.3 18

Historique des versions d'Android

Nom Version API Level
KITKAT 4.4 19
KITKAT_WATCH 4.4W 20
LOLLIPOP 5.0 21

Bâtiment 44 du GooglePlex à Mountain View dans la Silicon Valley, région de la baie de San Francisco en Californie

L'architecture d'Android

Android est une pile de logiciels mobiles orchestrée pour piloter une plateforme mobile

L'architecture d'Android

  • Applications : les applications développées avec le SDK et interagissant avec l'utilisateur
  • Application Framework : les APIs du kit de développement (SDK) Android
  • Android Runtime : la machine virtuelle et les bibliothèques permettant l'exécution de programmes Java
  • Libraries : les bibliothèques logicielles nécessaires à l'exécution d'Android
  • Linux Kernel : les modules compilés de Linux réalisant l'interface avec le matériel de la plateforme

Le moteur d'exécution d'Android

  • Les applications Android sont écrites en Java et utilisent des APIs fournis par le kit de développement
  • Android utilise un moteur d'exécution optimisé pour l'exécution sur plateformes mobiles
  • Dalvik est la machine virtuelle utilisée comme moteur d'exécution jusqu'à la version 4.4
  • La machine virtuelle Android Runtime remplace Dalvik à partir de la version 5
  • L'exécution de ces machines virtuelles diffère de celle des moteurs d'exécutions Java classiques
    • Dalvik recompile le ByteCode d'une application dans un langage machine avant de l'exécuter (compilation "Just-In-Time")
    • Android Runtime recompile le ByteCode à l'installation de l'application pour optimiser les performances et l'autonomie de la batterie (cela augmente l'espace occupé par l'application)

Le moteur d'exécution d'Android

Architecture d'exécution d'un programme Java

Source : OpenClassrooms

Le moteur d'exécution d'Android

Architecture d'exécution d'un programme Android

Source : OpenClassrooms

SDK Android

  • Le SDK fournit les outils de développement Android
  • L'outil Android Device Manager (avd) permet de gérer des emulateurs d'appareils Android (basés sur Qemu)
  • Les machines virtuelles Dalvik et Android Runtime permettent d'exécuter les applications développées
  • L'interface en ligne de commande Android Debug Brige (adb) permet de communiquer avec des appareils Android
  • Le programme SDK Manager permet de gérer certains composants du SDK (comme les APIs) sous forme de paquets
  • Les APIs du SDK fournissent le cadre de développement des applications Android
  • Le kit de développement Java (JDK) est nécessaire au fonctionnement du SDK
    • La version 6 du JDK est compatible jusqu'à la version 4.4
    • La version 7 du JDK est obligatoire à partir de la version 5

Android Studio

  • Un environnement de développement (ou IDE) est un ensemble d'outils pour augmenter la productivité des programmeurs qui développent des logiciels (source : Wikipedia)
  • Le SDK peut être utilisé à travers un environnement de développement pour une meilleure productivité
  • Android Studio est l'IDE officiel de dévéloppement Android (basé sur l'IDE Java IntelliJ IDEA)
  • L'IDE Android Studio est gratuit et multi-plateformes (Linux, Mac et Windows)
  • Une installation du JDK est nécessaire pour utiliser l'IDE
  • Page de téléchargement :
    https://developer.android.com/sdk/index.html#Other

Android Studio

Screenshot d'Android Studio

Android Studio

Quelques fonctionnalités intéressantes :

  • Editeur de code intéligent (autocomplétion, refactorisation, ...)
  • Editeur graphique d'interfaces
  • Modèles de projet
  • Interface avec des outils du SDK
  • Développement d'applications multi-plateformes
  • Compilations avancées avec Gradle

Définition d'une application

  • Une application est une archive .apk exécutable sur Android
  • Contenu d'une archive .apk :
    • Code source écrit Java (et utilisant les APIs du SDK)
    • Données
    • Ressources (et son registre R.java)
    • Fichiers XML (dont le manifeste AndroidManifest.xml)
  • Le manifeste AndroidManifest.xml est une déclaration écrite en XML des différents composants de l'application
  • Le registre R.java est une classe Java contenant des constantes permettant d'identifier les ressources
  • L'outil aapt du SDK permet de compiler un projet en .apk et de générer le registre des ressources R.java
  • Une application s'exécute dans son propre processus Linux avec sa propre instance de JVM (isolations des exécutions)

Composants fondamentaux

  • Layout : fichier XML décrivant une partie de l'interface graphique
  • Activity : une activité gère l'affichage et l'interaction d'un écran
  • Service : un service est un composant exécuté en tâche de fond (il ne fournit pas d'interface graphique)
  • ContentPorvider : un fournisseur de contenu gère des données partageables et/ou persistantes
  • BroadcastReceiver : un récepteur d'information gère des messages systèmes ou applicatifs (récepteur d'intentions)
  • Intent : un événement traduisant une intention à réaliser une action par un composant (mode de communication des activités, services et récepteurs d'information)

Les bonnes adresses Android

Made with Slides.com