Architecture du système Android
Le but de ce tutoriel est d’explorer l’architecture système du système d’exploitation mobile Android. Cela vous donnera une idée générale des différentes couches impliquées dans Android et de la façon dont elles sont liées les unes aux autres. Nous parlerons également de la relation entre Android et Linux lui-même.
Noyau Linux
Android est-il vraiment Linux ?
Cette question revient souvent. De nombreux utilisateurs ne comprennent pas comment Android et un système d’exploitation comme Ubuntu peuvent tous deux être considérés comme Linux. Après tout, les deux ont une apparence et un fonctionnement complètement différents.
Android et d’autres distributions Linux ont toutes deux le noyau Linux à leur cœur. Par conséquent, de nombreux utilisateurs appelleront ces systèmes d’exploitation « Linux ». En réalité, seul le cœur du système d’exploitation est Linux, et le reste est simplement constitué d’applications ou de bibliothèques créées pour fonctionner avec le noyau Linux.
Ubuntu et d’autres distributions de bureau grand public sont communément appelées GNU/Linux, car elles contiennent beaucoup de logiciels de GNU. Android évite cette distinction car Google a écrit ses propres bibliothèques et applications pour fonctionner avec le noyau Linux. Le résultat est le système d’exploitation Android que la moitié du monde a sur son téléphone.
Comment Android utilise-t-il Linux ?
Le noyau Linux fournit une couche matérielle d’abstraction pour Android. Cela permet à Android d’être porté dans une variété d’appareils différents. De plus, le noyau Linux est utilisé pour la gestion de la mémoire d’Android, la gestion des processus, la mise en réseau et d’autres services de systèmes d’exploitation soulignés. Les fonctionnalités de base telles que la prise en charge du Wi-Fi et du Bluetooth sont fournies par le noyau Linux.
N’oubliez pas : au cœur de chaque appareil Android se trouve le noyau Linux.
Bibliothèques natives
Les programmes (ou applications, comme Android les appellerait) et les services système nécessitent des bibliothèques pour fonctionner correctement. Ces bibliothèques peuvent être partagées entre de nombreuses applications et services différents. Vous pouvez le considérer comme un ensemble d’instructions qui offrent la possibilité d’exécuter de nombreuses choses différentes sur le système d’exploitation.
Ces bibliothèques partagées sont préinstallées sur un appareil Android par chaque fournisseur. Ils sont écrits en langage C/C++ et permettent des graphiques 3D et 2D, un gestionnaire de fenêtres, toutes sortes de formats audio vidéo, une base de données Sqllite, etc.
Les distributions Linux de bureau utilisent généralement les mêmes bibliothèques les unes que les autres. Mais pour Android, Google a développé ses propres versions pour de nombreuses bibliothèques, ou modifié les versions existantes pour mieux répondre aux besoins de leur système d’exploitation. À titre d’exemple, Google a créé sa propre version de libc, une bibliothèque très courante qui est présente sur toutes les principales distributions Linux.
Exécution Android
Vous pouvez considérer la couche Android Runtime comme une extension de la couche Bibliothèques natives. Cet environnement d’exécution a été créé par Google et effectue la traduction du bytecode afin que le code puisse être exécuté. Dans les versions précédentes d’Android, le code de la machine virtuelle Dalvik était utilisé, mais il a été abandonné au profit de l’environnement d’exécution interne de Google.
En plus de l’environnement d’exécution de Google, il existe des bibliothèques Java Core dans cette couche. L’environnement d’exécution Java utilise OpenJDK. Il existe un compilateur JIT qui permet des performances constantes des applications et la conservation de l’espace de stockage.
L’inclusion de Java sur Android a donné lieu à de nombreux drames juridiques entre Google et Oracle, ce qui peut être une lecture amusante lorsque vous êtes d’humeur.
Cadre d’application
Le cadre d’application fournit une interface permettant aux développeurs d’interagir avec des services de haut niveau au sein d’Android. Il s’agit par exemple d’un gestionnaire de fenêtres et d’un gestionnaire de notifications. Sans ce cadre, les développeurs (et par conséquent les applications qu’ils créent) seraient très limités dans ce qu’ils peuvent faire en termes d’interaction avec le système d’exploitation ou le matériel du téléphone.
Applications et widgets
Enfin, nous atteignons la couche de niveau le plus élevé de l’architecture du système Android. C’est ce avec quoi tous les utilisateurs finaux se familiarisent : les applications et les widgets eux-mêmes. Comme vous pouvez probablement le supposer, cette couche accepte les entrées de l’utilisateur final et exécute du code basé sur ces entrées afin d’obtenir le résultat souhaité.
Des éléments tels que l’écran d’accueil, les applications, les widgets, les contacts et d’autres éléments avec lesquels l’utilisateur peut interagir directement sont tous considérés comme faisant partie de cette couche de niveau le plus élevé.
Réflexions finales
J’espère que ce tutoriel vous a donné une idée claire de la structure du système d’exploitation Android. Nous avons également essayé de mettre en évidence les principales différences entre Android et une distribution de bureau Linux typique, car de nombreux utilisateurs ont une confusion à ce sujet. En tant qu’utilisateur final, la seule couche dont vous vous soucierez est la couche application. Les développeurs d’applications interagiront également avec la couche d’infrastructure d’application. Au-delà de cela, le reste est à Google et aux mainteneurs du noyau Linux.

