Chapitre 2
Architecture d’Android
Applications Mobiles 1
Objectifs
Comprendre l'architecture fondamentale
d'Android.
Explorer les composants clés du système
Android.
Apprendre comment ces composants
interagissent pour permettre le fonctionnement
du système Android.
Explorer les composantes d’une application
Android et la structure d’un fichier APK.
Applications Mobiles 2
Plan
1. Introduction
2. Architecture Android
Noyau (Kernel)
Hardware Abstraction Layer
Librairies C/C++ natives
Machine Virtuelle (ART)
Framework d‘applications
Applications Android
3. Structure d’un package .apk
4. Composantes d’applications Android
Applications Mobiles 3
Introduction
Android est bien plus qu'un système
d'exploitation.
C'est une architecture complexe qui combine
plusieurs composantes pour offrir une
expérience utilisateur exceptionnelle sur une
grande variété de dispositifs:
Smartphones, tablettes, téléviseurs intelligents,
montres connectées,…
Applications Mobiles 4
Architecture d’Android
Applications Mobiles 5
Noyau Android
Le noyau d'Android est basé sur le noyau Linux.
Il est adapté aux besoins spécifiques des appareils mobiles.
Fournit des pilotes pour le matériel (Camera,
capteurs, Bluetooth, ….)
Comprend des fonctionnalités pour la gestion de
l'énergie, de la mémoire, des processus, de la
sécurité, et plus encore.
Applications Mobiles 6
Spécificités du Noyau Android:
1. Binder
Binder remplace IPC SysV (de Linux)
Module de communication interprocessus
spécifiquement conçu pour Android.
Sert à la gestion de la communication et de la
concurrence entre les processus.
Économie en ressources système
Conçu pour minimiser les coûts en ressources.
Partage de données
Utilisation du mécanisme de partage mémoire
(ashmem driver)
Applications Mobiles 7
Spécificités du Noyau Android :
2. Ashmem
Ashmem (Android Shared Memory): Gestion
de la Mémoire
Ashmem est un sous-système de gestion de la
mémoire dans Android.
Il est similaire à Shared Memory (SHM) défini par
la norme POSIX (Linux), mais propose une API plus
simple et spécifique à Android.
Applications Mobiles 8
Spécificités du Noyau Android :
3. L’accès aux journaux système (logs)
L’ accès aux journaux système (logs) ne peut
se faire comme sur un système classique.
Google a donc intégré un logger dans le
noyau. Celui-ci permet d’effectuer une
surveillance via la commande « logcat ».
"logcat"permet d'afficher en temps réel les
messages du journal système directement sur
l'écran ou de les rediriger vers un fichier
Applications Mobiles 9
Spécificités du Noyau Android :
4. OOM (Out Of Memory) Killer
Android dispose d'un composant appelé
"OOM killer" (tueur OOM)
Surveiller l'utilisation de la mémoire
Prendre des mesures lorsque la mémoire est
presque épuisée.
Libérer de la mémoire en terminant des
processus qui utilisent trop de mémoire et qui
ne sont pas essentiels pour le fonctionnement
du système.
Applications Mobiles 10
Spécificités du Noyau Android :
Autres différences
Le noyau Android est optimisé pour gérer
efficacement l'énergie sur les appareils
mobiles.
Gestion de la mise en veille optimisée,…
Gestion des alarmes pour les fonctionnalités
de réveil planifié.
….
Applications Mobiles 11
HAL (Hardware Abstraction Layer)
Abstraction matérielle
Masque les détails spécifiques du matériel aux
niveaux supérieurs du système.
Interfaces standardisées (API HAL)
Définit des interfaces normalisées pour différents
composants matériels (ex. : HAL de caméra, HAL de
capteur, HAL d'affichage).
Portabilité et compatibilité
Permet aux applications Android de s'exécuter sur
divers appareils Android, indépendamment des
différences matérielles.
Applications Mobiles 12
Librairies C/C++ natives
Comprend diverses bibliothèques principales
C/C++:
SSL/TLS,
libc,
Graphics,
SQLite,
Webkit,
OpenGL, etc.
Applications Mobiles 13
Android Runtime (ART) : Environnement
d'Exécution d'Android
Remplacement de Dalvik :
ART remplace Dalvik en tant qu'environnement
d'exécution par défaut dans les versions Android
5.0 et ultérieures.
Compilation AOT (Ahead-Of-Time) :
ART utilise la compilation AOT pour convertir le
bytecode des applications Android en code natif
(Fichier ELF) au moment de l'installation,
améliorant ainsi l'efficacité de l'exécution.
Applications Mobiles 14
Framework d'Applications (Java API
Framework)
Fournit les classes utilisées pour créer des
applications Android.
Gère l'interface utilisateur et les ressources
des applications.
Comprend plusieurs services:
Service de téléphonie, les services de localisation,
le gestionnaire de notifications, le service NFC, le
système de visualisation, etc.
Applications Mobiles 15
Applications
Les applications natives et tierces
Les contacts, la messagerie électronique, la
musique, la galerie, l'horloge, les jeux, etc.,
La couche d'application s'exécute dans le
cadre d'exécution d'Android à l'aide des
classes et des services mis à disposition à
partir du Framework d'applications.
Applications Mobiles 16
Structure d’un package .apk (Android
Package)
Un package android
.apk contient
plusieurs fichiers et
dossiers emballés
sous
forme d'un package
avec l'extension .apk.
Applications Mobiles 17
Structure d’un package .apk (Android
Package)
[Link]: décrit les informations
essentielles sur l’application au système d'exploitation
Android et à Google Play. Le fichier manifeste doit
déclarer les éléments suivants :
Les composants de l'application, y compris toutes les
activités, services, récepteurs de diffusion et fournisseurs
de contenu.
Les autorisations dont l'application a besoin pour accéder
aux parties protégées du système ou à d'autres
applications.
Les fonctionnalités matérielles et logicielles requises par
l'application, qui affectent les appareils pouvant installer
l'application à partir de Google Play
Applications Mobiles 18
Structure d’un package .apk (Android
Package)
[Link]: .dex (Dalvik Executable) est un
format de fichier pour contenir le bytecode
exécutable.
Avant Android 5.0, les applications Android étaient
exécutées sur la Dalvik Virtual Machine. Le bytecode
Java source (.class) était converti en bytecode Dalvik
(.dex) pour être exécuté par la machine virtuelle
Dalvik.
À partir d'Android 5.0, Android a introduit Android
Runtime (ART) en remplacement de Dalvik. ART utilise
toujours des fichiers .dex, mais il les compile en code
natif au moment de l'installation.
Applications Mobiles 19
Structure d’un package .apk (Android
Package)
res (dossier): "res" (abréviation de "resources")
joue un rôle crucial dans la gestion des ressources
de l'application Android. Les ressources
comprennent généralement des éléments tels
que
des images,
des fichiers de mise en page (layouts),
des fichiers XML,
des valeurs (comme les chaînes de texte),
et d'autres éléments nécessaires à l'interface
utilisateur et au fonctionnement de l'application
Applications Mobiles 20
Structure d’un package .apk (Android
Package)
[Link] et [Link]: ces fichiers sont utilisés
dans le processus de signature numérique des
fichiers APK (ou JAR) pour assurer l'authenticité
et l'intégrité du contenu.
Android utilise ces certificats pour vérifier que le
fichier n'a pas été altéré et qu'il provient bien du
signataire attendu.
Cela contribue à la sécurité en garantissant que le
code exécuté est celui qui a été approuvé par le
signataire autorisé.
Applications Mobiles 21
Composantes d’une Application
1. Activities
2. Fragments
3. Intents
4. Broadcast receivers
5. Content providers
6. Services
Applications Mobiles 22
Composantes d’une Application:
1. Activities
Représentent les écrans
individuels de l'application.
Chaque écran de
l'application est
généralement une activité
distincte.
Les activités gèrent
l'interface utilisateur et
l'interaction de l'utilisateur
avec l'application.
Applications Mobiles 23
Composantes d’une Application:
2. Fragments
Un fragment représente
un comportement ou
une partie de l'interface
utilisateur au sein de
l'activité.
Applications Mobiles 24
Composantes d’une Application:
3. Intents
Les intentions sont des
messages asynchrones.
Peuvent êtres utilisées
pour demander une action
à une autre composantes
d'application.
Applications Mobiles 25
Composantes d’une Application:
4. Broadcast receivers
Permettent aux
applications
de recevoir des
notifications d'autres
applications
et du système lui-même.
Applications Mobiles 26
Composantes d’une Application:
5. Content providers
Offrent un mécanisme
pour partager des données
entre les applications.
Applications Mobiles 27
Composantes d’une Application:
6. Services
Exécutent des tâches en
arrière-plan (traitement des
données, intentions de
démarrage et notifications,
etc.) sans présenter
d'interface utilisateur.
Applications Mobiles 28
Cycle de vie d’une Activity
Applications Mobiles 29