Android… Un nom prononcé par tous aujourd’hui. Android est partout, sur les smartphones, les tablettes, les TV, beaucoup de sites spécialisés en parlent, les gens également. Mais enfin, que savons-nous réellement d’Android ?
5. Le Framework
Voici la partie la plus importante de tout le système Android. Tout est lié. Tout passe par le framework. C’est lui qui permet aux « briques » mis en place de fonctionner ensemble.
Ce framework est écrit entièrement en Java. Il fournit tout ce dont les applications peuvent avoir besoin.
Ces besoins sont de différentes natures. Voici les principales ressources offertes par le framework :
- Activity Manager : c’est lui qui gère le cycle de vie des applications et assure une partie du multitâche.
- Package manager : il permet à l’Activity Manager de manipuler les paquets au format .apk
- Window Manager : il utilise le Surface Manager (Surface Flinger) et gère l’affichage
- Ressource Manager : lui s’occupe de tout ce qui n’est pas du code (image, audio, vidéo…)
- Content Provider : c’est le système qui permet le partage des données entre les applications (différent d’IPC)
- Le View System : c’est le fournisseur des composants graphiques. GTK+ est l’équivalent sous un système Linux traditionnel.
- Telephony service : il fournit l’accès aux interfaces de téléphonies. (GSM, 3G, GPRS…)
- Location service permet l’utilisation du GPS.
- Bluetooth Service : comme son nom l’indique, prend en charge le Bluetooth
- Wifi Service : fait de même pour le Wifi.
- Sensor Service : fourni l’accès pour les différents détecteurs (accéléromètre, compas, lumière…)
Le framework est organisé autour de plusieurs instances de la machine virtuelle Dalvik. Chaque application est exécutée dans sa propre machine Dalvik. Elles communiquent entre elles via un mécanisme d’IPC (inter-process call), par envoi de messages.
Le framework est porté par une instance de la machine Dalvik et expose des ressources et services pour les applications. C’est le processus SystemServer, il doit être actif pour que les applications puissent interagir avec le système. Les bibliothèques du framework communiquent en IPC avec SystemServer.
Les applications peuvent se lancer de deux manières (toujours au niveau framework). Si le terminal n’accepte pas l’exécution de plusieurs processus, chaque application est isolé dans un chargeur de classe spécifique. Toutes les applications partagent alors la même instance de Dalvik.
En revanche si le terminal accepte la cohabitation de plusieurs processus (ce qui est généralement le cas) le framework doit instancier des machines virtuelles Dalvik pour chacune. Pour optimiser l’instanciation des machines virtuelles, le framework utilise un processus spécifique appelé Zygote. Zygote est en fait une première instance de Dalvik en modèle. Zygote « écoute » sur un socket local. Lorsqu’il reçoit une commande, il réalise un « fork » de Dalvik qui servira pour le nouveau processus.
Tout ceci est un peu obscur. Récapitulons :
- Une première machine virtuelle est lancée (au démarrage du système) : SystemServer.
- Le framework est lié à cette machine virtuelle et communique par IPC.
- Une autre machine virtuelle est aussi lancée c’est Zygote. Celle-ci va créer de nouvelle machines virtuelles pour les applications.
Le framework est une partie d’Android très complexe, il « englobe » et lie beaucoup d’autre composant. Grâce au mécanisme IPC, il peut communiquer avec presque tout le système. Avec les applications pour leur créer leur environnement d’exécution (Dalvik), avec le noyau Linux (via le processus SystemServer), avec les bibliothèques et avec les différentes interfaces (ADB, AIDL…).
Commenter 6 commentaires
Comme tu l'as fait remarquer, le sdk ne donne accès qu'au framework, mais il faut aussi savoir ce qu'est que le framework. Car dans Android, le framework désigne deux choses :
Le Framework, une partie de l'environnement d'execution
et le framework Android, qui est l'environnement de programmation (donc le sdk, souvent associé à eclipse).
Le noyau n'est pas accessible sauf si le bootloader du téléphone est débloqué ou que le fabriquant a mis à disposition ses outils concernant le kernel.
Nous sommes ici pour parler du dossier, et pour moi, d'avoir des retours pour parfaire mes prochains sujets.