Android Architecture : couches d'application, framework, composant

Android La sortie initiale du système d'exploitation remonte à 2008. Même à ses débuts, l'équipe derrière le système d'exploitation l'a construit sur les épaules de géants. Au-delà de l'interface utilisateur que le Android OS se présente au niveau de la surface, il est constitué de plusieurs couches. Ces couches incluent du code personnalisé et des technologies open source qui sont en développement continu depuis des décennies.

Android Android a été développé grâce à des efforts collaboratifs et des investissements massifs de la part de nombreuses entreprises. La principale société à l'origine du développement d'Android est Google. Parmi les autres entreprises figurent des fabricants d'appareils tels que Samsung, LG, des fabricants de processeurs tels qu'Intel et ARM, pour n'en citer que quelques-uns.

Quand on parle de Android architecture, nous entendons comment la Android Le système a été conçu, segmenté en couches et construit pour fonctionner comme un système. La construction d'un système aussi complexe nécessite une structuration minutieuse pour garantir que tous les composants fonctionnent ensemble de manière cohérente. Son architecture garantit que les nombreux composants fonctionnent comme un tout sans se bloquer.

Couches

Voici les couches qui composent le Android architecture telle qu'étiquetée sur le schéma :

  1. Application
  2. Cadre d'application
  3. Android Runtime et bibliothèques principales
  4. Linux Kernel

Le développement d’un système d’exploitation pour les appareils mobiles comporte un certain nombre de défis. L'utilisation de cette architecture en couches garantit que différents problèmes sont décomposés et résolus à différents niveaux.

Une architecture en couches permet de séparer les problèmes et garantit que les développeurs de logiciels Android n'ont pas à faire face à des problèmes de bas niveau à chaque instant. Ils peuvent plutôt se concentrer sur la création de valeur commerciale en fonction de la couche sur laquelle ils travaillent.

Les développeurs s'efforcent de créer des applications sans avoir à se soucier de la mise en œuvre du cadre d'application. Ce travail est laissé aux développeurs système travaillant sur le framework d'application.

Les développeurs d'Application Framework travaillent sur l'expérience des développeurs et n'ont pas à se soucier des pilotes de bas niveau. Les ingénieurs système de bas niveau peuvent se concentrer entièrement sur les composants de bas niveau tels que les pilotes Bluetooth ou audio, etc.

AndroidLa structure en couches de permet d'appliquer des mises à jour avec des corrections de bugs ou des améliorations à chaque couche individuellement. Cela garantit que les modifications entre les couches n’interfèrent pas les unes avec les autres. Cela permet aux personnes travaillant à différents niveaux du système d'exploitation de se gêner mutuellement à mesure que de nouvelles mises à jour et versions sont effectuées.

Android Application

Android Application
Android Application

Il s'agit de la couche avec laquelle les utilisateurs finaux interagissent. C'est sur cette couche que les développeurs d'applications publient leurs applications à exécuter.

Android, par défaut, est livré avec un ensemble d'applications qui rendent les appareils Android utilisables dès le départ.

  1. Accueil: La page d'accueil sur Android se compose d'icônes de lancement pour les applications couramment utilisées auxquelles l'utilisateur final peut souhaiter un accès rapide. Vous pouvez démarrer les applications en cliquant sur les lanceurs de ces applications. Tout en haut de l'écran, vous disposez de widgets qui affichent le réseau, le niveau de la batterie, la date et l'heure.
  2. Contacts : Android, par défaut, fournit un moyen de stocker et de récupérer des contacts. Les informations de contact sont partagées entre d'autres applications pour améliorer les fonctionnalités.
  3. Messages: Android offre la possibilité d'envoyer et de recevoir des messages SMS.
  4. Courriel: Android est livré avec un support natif pour les services de messagerie. Configuration d'un Android l'appareil nécessite un compte Gmail. La configuration de Gmail active d'autres composants dépendants de la messagerie électronique sur Android appareils. Certaines fonctionnalités dépendantes du courrier électronique incluent des mécanismes de sécurité et de récupération. Une autre fonctionnalité dépendante du courrier électronique est l'accès au Play Store, un marché pour Android applications.
  5. Navigateur: Android est livré avec un navigateur par défaut.
  6. Tiroir de notifications : Faire glisser l'écran vers le bas expose le tiroir de notification. Il fournit des événements d'application dont l'utilisateur doit être conscient. Au-dessus de la notification se trouvent un ensemble de raccourcis vers certains paramètres de périphérique couramment utilisés que les utilisateurs peuvent activer. Ces paramètres incluent des bascules d'activation et de désactivation pour divers composants matériels tels que Bluetooth et Wifi. Un appui long sur ces événements nous permet d'accéder à leur page de configuration.

Cette couche est également appelée niveau utilisateur, contrairement aux couches inférieures qui sont principalement adaptées au développement d'applications. Les développeurs d'applications créent et personnalisent les expériences de leurs applications sur cette couche. Les couches situées sous la couche d'application ne sont pas personnalisées par les développeurs d'applications. Elles sont considérées comme faisant partie de la couche système. Ces couches sont personnalisées par les fabricants d'appareils, les équipes Google Android ou des tiers qui souhaitent utiliser la couche d'application. Android code source de leur produit ou de leur recherche.

Cadre d'application

Pour Android Le système d'exploitation expose les bibliothèques et les fonctionnalités sous-jacentes du Android appareil qui utilise un Java API. C'est ce qu'on appelle le Android cadre. Le cadre expose un moyen sûr et uniforme d'utiliser Android ressources de l'appareil.

Cadre d'application
Cadre d'application

1) Responsable d'activité

Les applications utilisent le Android composant d'activité pour présenter un point d'entrée à l'application. Android Les activités sont les composants qui hébergent l'interface utilisateur avec laquelle les utilisateurs de l'application interagissent. À mesure que les utilisateurs finaux interagissent avec le Android appareil, ils démarrent, s’arrêtent et sautent d’une application à l’autre. Chaque événement de navigation déclenche l'activation et la désactivation de nombreuses activités dans les applications respectives.

Pour Android ActivityManager est responsable d'un comportement prévisible et cohérent lors des transitions d'application. L'ActivityManager fournit un emplacement permettant aux créateurs d'applications de faire réagir leurs applications lorsque le Android Le système d'exploitation effectue des actions globales. Les applications peuvent écouter des événements tels que la rotation d'un appareil, la destruction d'une application en raison d'un manque de mémoire, le déplacement d'une application hors du focus, etc.

Quelques exemples de la façon dont les applications peuvent réagir à ces transitions incluent la pause d'une activité dans un jeu, l'arrêt de la musique pendant un appel téléphonique.

2) Gestionnaire de fenêtres

Android peut déterminer les informations de l'écran pour déterminer les exigences nécessaires à la création de fenêtres pour les applications. Windows sont les emplacements où nous pouvons voir l'interface utilisateur de notre application. Android utilise le gestionnaire de fenêtres pour fournir ces informations aux applications et au système lors de leur exécution afin qu'ils puissent s'adapter au mode d'exécution de l'appareil.

Le gestionnaire de fenêtres aide à offrir une expérience d'application personnalisée. Les applications peuvent remplir tout l'écran pour une expérience immersive ou partager l'écran avec d'autres applications. Android permet cela en autorisant plusieurs fenêtres pour chaque application.

3) Gestionnaire de localisation

pont Android les appareils sont équipés d'appareils GPS qui peuvent obtenir la localisation de l'utilisateur à l'aide d'informations satellite pouvant aller jusqu'à la précision des mètres. Les programmeurs peuvent demander l'autorisation de localisation aux utilisateurs, fournir une localisation et des expériences conscientes.

Android est également capable d'utiliser les technologies sans fil pour enrichir davantage les détails de localisation et augmenter la couverture lorsque les appareils sont dans des espaces clos. Android fournit ces fonctionnalités sous l’égide du Location-Manager.

4) Gestionnaire de téléphonie

pont Android les appareils jouent un rôle primordial dans la téléphonie. Android utilise TelephoneManager pour combiner des composants matériels et logiciels afin de fournir des fonctionnalités de téléphonie. Les composants matériels comprennent des composants externes tels que la carte SIM et des composants de périphérique tels que le microphone, la caméra et les haut-parleurs. Les composants logiciels incluent des composants natifs tels que le pavé numérique, l'annuaire téléphonique et les profils de sonnerie. À l'aide de TelephoneManager, un développeur peut étendre ou affiner la fonctionnalité d'appel par défaut.

5) Gestionnaire de ressources

Android l'application contient généralement plus que du code. Ils disposent également d'autres ressources telles que des icônes, des fichiers audio et vidéo, des animations, des fichiers texte, etc. Android contribue à garantir un accès efficace et réactif à ces ressources. Cela garantit également que les bonnes ressources sont fournies aux utilisateurs finaux. Par exemple, les fichiers texte de langue appropriée sont utilisés lors du remplissage des champs dans les applications.

6) Afficher le système

Android fournit également un moyen de créer facilement des composants visuels communs nécessaires à l'interaction avec l'application. Ces composants incluent des widgets tels que des boutons, des supports d'images tels que ImageView, des composants permettant d'afficher une liste d'éléments tels que ListView et bien d'autres. Les composants sont prédéfinis mais sont également personnalisables pour s'adapter aux besoins et à l'image de marque des développeurs d'applications.

7) Gestionnaire de notifications

Le Gestionnaire de Notifications est chargé d'informer Android utilisateurs d'événements d'application. Pour ce faire, il donne aux utilisateurs des signaux visuels, audio ou vibratoires, ou une combinaison de ceux-ci, lorsqu'un événement se produit. Ces événements ont des déclencheurs externes et internes. Quelques exemples de déclencheurs internes sont des événements d'état de batterie faible qui déclenchent une notification indiquant une batterie faible. Un autre exemple concerne les événements spécifiés par l'utilisateur, comme une alarme. Quelques exemples de déclencheurs externes incluent de nouveaux messages ou de nouveaux réseaux wifi détectés.

Android fournit un moyen aux programmeurs et aux utilisateurs finaux d'affiner le système de notifications. Cela peut contribuer à garantir qu'ils peuvent envoyer et recevoir des événements de notification de la manière qui leur convient le mieux, ainsi qu'à leur environnement actuel.

8) Gestionnaire de paquets

Android donne également accès à des informations sur les applications installées. Android assure le suivi des informations sur les applications telles que les événements d'installation et de désinstallation, les autorisations demandées par l'application et l'utilisation des ressources telles que la consommation de mémoire.

Ces informations peuvent permettre aux développeurs de faire en sorte que leurs applications activent ou désactivent des fonctionnalités en fonction des nouvelles fonctionnalités présentées par les applications compagnons.

9) Fournisseur de contenu

Android dispose d'un moyen standardisé de partager des données entre les applications de l'appareil à l'aide du fournisseur de contenu. Les développeurs peuvent utiliser le fournisseur de contenu pour exposer les données à d'autres applications. Par exemple, ils peuvent rendre les données de l'application consultables à partir d'applications de recherche externes. Android expose lui-même des données telles que les données de calendrier, les données de contact, etc. en utilisant le même système.

Android Runtime et bibliothèques principales/natives

Android Runtime et bibliothèques principales/natives
Bibliothèques

1) Android Runtime

Android utilise actuellement Android Runtime (ART) pour exécuter le code de l'application. ART est précédé par le runtime Dalvik qui a compilé le code du développeur dans des fichiers exécutables Dalvik (fichiers Dex). Ces environnements d'exécution sont optimisés pour la plateforme Android en tenant compte des contraintes de processeur et de mémoire sur les appareils mobiles.

L'environnement d'exécution traduit le code écrit par les programmeurs en code machine qui effectue des calculs et utilise les composants du framework Android pour fournir des fonctionnalités. Android héberge plusieurs applications et composants système qui s’exécutent chacun dans leurs processus.

Bibliothèques principales

Dans ce segment, nous discuterons de certaines des bibliothèques principales présentes dans le Android système opérateur.

2) Cadre médiatique

Android prend également en charge nativement les codecs multimédias populaires, ce qui facilite la tâche des applications créées sur le Android plate-forme permettant d'utiliser/lire des composants multimédias prêts à l'emploi.

3) SQLite

Android a également un SQLite base de données qui permet aux applications de disposer de fonctionnalités de base de données natives très rapides sans avoir besoin de bibliothèques tierces.

4) Type libre

Android est livré avec un moteur de polices rapide et flexible préinstallé. Cela permet aux développeurs d'applications de styliser les composants de leur application et d'offrir une expérience riche qui communique l'intention du développeur.

5) OpenGL

Android est également livré avec le système graphique OpenGL. C'est une bibliothèque C qui aide Android utiliser des composants matériels dans le rendu en temps réel de graphiques 2D et 3D.

6) SSL

Android est également livré avec une couche de sécurité intégrée pour permettre une communication sécurisée entre les applications sur Android et d'autres appareils tels que des serveurs, d'autres appareils mobiles, des routeurs 6.

7) ChS

Android est livré avec une bibliothèque graphique implémentée dans un code de bas niveau qui restitue efficacement les graphiques pour la plate-forme Android. Il fonctionne avec les composants de niveau supérieur du Android cadre Android pipeline graphique.

8) Libc

Le noyau de Android contient des bibliothèques écrites en C et C++, qui sont des langages de bas niveau destinés à une utilisation intégrée et qui aident à maximiser les performances. Libc fournit un moyen d'exposer des fonctionnalités système de bas niveau telles que les threads, les sockets, les E/S, etc. à ces bibliothèques.

9) Kit Web

Il s'agit d'un moteur de navigateur open source utilisé comme base pour créer des navigateurs. Le défaut Android navigateur avant la version 4.4, KitKat l'utilise pour le rendu des pages Web. Il permet aux développeurs d'applications de restituer les composants Web dans le système de visualisation à l'aide de WebView. Cela permet aux applications d'intégrer des composants Web dans leurs fonctionnalités.

10) Gestionnaire de surfaces

Le gestionnaire de surface est chargé d’assurer le rendu fluide des écrans d’application. Pour ce faire, il compose des graphiques 2D et 3D pour le rendu. Il permet en outre cela en effectuant une mise en mémoire tampon hors écran.

Linux Kernel

Le composant racine du Android Le système est le noyau Linux. C'est la pièce fondamentale qui permet à tous Androidla fonctionnalité.

Linux Kernel

Le noyau Linux est un logiciel éprouvé qui a été utilisé dans le développement systèmes d'exploitation pour des appareils d'une large gamme, des superordinateurs aux petits gadgets. Ses capacités de traitement sont limitées, comme les petits gadgets en réseau pour l'Internet des objets (IoT).

Le noyau Linux peut être modifié pour répondre aux spécifications des appareils afin de permettre aux fabricants de faire Android des appareils dotés de différentes capacités pour correspondre à l'expérience utilisateur.

En ce qui concerne Android, le noyau est responsable de nombreuses fonctionnalités fondamentales, y compris, mais sans s'y limiter, celles-ci :

  1. Pilotes de périphérique
  2. Gestion de la mémoire
  3. Gestion des processus

Développons certaines fonctionnalités :

Pilotes de périphérique

Le noyau Linux héberge les pilotes nécessaires pour permettre au système d'exploitation de fonctionner avec différents composants matériels. Ces pilotes fournissent une interface standard avec laquelle les composants matériels provenant de différents fabricants peuvent fonctionner.

Cela permet aux fabricants d'appareils de se procurer différents composants, tels que des composants Bluetooth, des composants Wifi, des composants de caméra. Tant que les fabricants correspondent aux Android spécifications standard, l’intégration est transparente.

1) Pilote USB

Linux fournit également Android avec un moyen d'interface avec les périphériques USB. Les appareils modernes sont équipés de différents ports USB, notamment USB 2.0 et de nouvelles versions USB, notamment USB-C. Ces pilotes permettent d'utiliser le port USB pour charger, transférer des données en direct telles que les journaux du Android appareils et interagir avec l'androïde système de fichiers.

2) Pilote Bluetooth

Le noyau Linux prend en charge l'interface avec les composants matériels Bluetooth. Il fournit un moyen de lire et d'écrire des données reçues à partir des fréquences radio Bluetooth prises en charge. Il offre également un ensemble d'installations pour Android pour configurer Bluetooth.

3) Pilote Wi-Fi

Le noyau Linux fournit des pilotes pour intégrer les composants matériels du réseau WiFi. Les composants WiFi intégrés dans les appareils mobiles permettent Android appareils pour se connecter aux réseaux wifi. Le pilote permet aux composants wifi de diffuser des réseaux wifi et de créer des hotspots.

4) Pilote d'affichage

Android permet de s'interfacer avec des composants d'affichage. Pour la plupart des appareils, le composant d'interface est un écran tactile LCD. Il permet de prendre en charge la configuration et le dessin des pixels.

5) Pilote audio

Android les appareils sont généralement livrés avec des composants matériels pour l’entrée et la sortie audio. Les pilotes audio du noyau permettent le Android système pour utiliser l’audio reçu de ces composants et produire également une sortie audio.

6) Gestionnaire de puissance

pont Android les appareils sont utilisés lorsqu’ils sont débranchés des prises de courant. Ils dépendent donc de batteries pour les alimenter pendant une grande partie de leur utilisation. Le noyau Linux est livré avec un système de gestion de l'énergie configurable pour répondre aux besoins des appareils qui l'utilisent.

Android Le système d'exploitation utilise le gestionnaire d'alimentation pour rendre les autres composants de l'appareil sensibles à l'alimentation. Pour ce faire, il diffuse divers états liés à la puissance. Ces états sont Veille, Veille et Batterie faible. Sur Android, le gestionnaire d'alimentation est réglé par défaut en mode veille pour garantir une durée de vie maximale de la batterie.

Le Power Manager expose les moyens permettant aux applications de réagir aux différents modes d'alimentation. Les applications peuvent également modifier leur comportement pour correspondre à l'état d'alimentation actuel de l'appareil.

Une application peut également demander de modifier les stratégies d'alimentation par défaut. Les applications peuvent atteindre les fonctionnalités souhaitées, telles que maintenir les composants matériels actifs. Un exemple consiste à garder l'écran actif lors de la lecture d'un livre pour garantir qu'un utilisateur n'est pas interrompu. Un autre exemple consiste à garder les composants audio allumés lorsque vous écoutez de la musique en arrière-plan.

7) Mémoire Flash

pont Android les appareils utilisent la mémoire flash comme moyen de stockage. La mémoire Flash est rapide et prend moins de place, ce qui la rend parfaite pour les petits appareils. Le noyau Linux fournit un moyen pour Android appareils pour lire et écrire dans la mémoire flash. Il fournit un moyen de partitionner la mémoire de telle manière que le système d'exploitation et d'autres applications puissent partager facilement et efficacement la ressource mémoire.

8) Classeur

Android héberge de nombreuses applications et composants système qui s'exécutent chacun dans leurs processus. Dans la plupart des cas, ces processus doivent être isolés les uns des autres pour éviter les interférences et la corruption des données. Pourtant, il existe des cas où nous souhaitons transmettre des données d'un processus à un autre.

Le noyau Linux permet la fonctionnalité de partage de données en fournissant des pilotes de classeur. Les pilotes de classeur permettent la communication inter-processus, IPC. L'utilisation de processus IPC permet de découvrir d'autres processus et de partager des informations.

Gestion de la mémoire

Une autre responsabilité du noyau Linux est la gestion de la mémoire. Lorsque différentes applications s'exécutent, le noyau garantit que l'espace mémoire qu'elles utilisent n'entre pas en conflit et ne s'écrase pas.

Cela permet également de garantir que toutes les applications en cours d'exécution disposent de suffisamment de mémoire pour fonctionner, en garantissant qu'aucune application ne prend trop de place.

Gestion des processus

Chaque application dans Android s'exécute dans un processus. Le Kernel est également responsable de la gestion des processus. Cela signifie qu'il est responsable de la création, de la pause, de l'arrêt, de l'arrêt ou de l'arrêt des processus.

Le noyau permet diverses fonctionnalités telles que l'exécution de plusieurs processus en même temps, la communication entre les processus, l'exécution de processus en arrière-plan, etc.

Comme chaque processus nécessite son propre espace mémoire pour fonctionner correctement, le noyau garantit que les espaces mémoire alloués à chaque processus sont protégés des autres processus. Cela garantit également que les ressources telles que RAM alloués aux processus sont libérés lorsque les processus sont arrêtés.

Le noyau Linux est également chargé de distribuer le travail aux processeurs présents dans l'appareil. Cela permet de maximiser les performances des appareils dotés de plusieurs cœurs, car différentes applications auront des processus exécutés sur un cœur différent.

Le noyau Linux effectue plus de tâches sous le capot, notamment en assurant la sécurité.

Résumé

  • Android l'architecture est organisée en couches.
  • Chaque couche résout un ensemble unique de problèmes.
  • Les utilisateurs finaux interagissent avec les applications sur la couche Application
  • Les développeurs d'applications développent des applications à utiliser sur la couche Application. Pour ce faire, ils utilisent des outils et des abstractions fournis par Application Framework.
  • Android La couche Framework simplifie l'accès aux composants de bas niveau en créant une API sur les bibliothèques natives.
  • Android Runtime et Core-Libraries utilisent des langages de bas niveau ainsi que des optimisations pour les appareils mobiles. Cela garantit que le code écrit par les développeurs d'applications fonctionne correctement malgré Android contraintes de l’appareil.
  • Au bas de la Android la pile logicielle est le noyau Linux. Il s'interface avec les composants matériels courants dans Android dispositifs.