Android-Architektur

Die Android-Systemarchitektur enthält die folgenden Komponenten:

Überblick über die Android-Systemarchitektur
Abbildung 1. Android Systemarchitektur
  • Application Framework. Das Anwendungsframework wird am häufigsten von Anwendungsentwicklern verwendet. Als Hardwareentwickler sollten Sie sich der Entwickler-APIs bewusst sein, da viele direkt den zugrunde liegenden HAL-Schnittstellen zugeordnet sind und hilfreiche Informationen zur Implementierung von Treibern bereitstellen können.
  • Binder IPC. Der Binder Inter-Process Communication (IPC)-Mechanismus ermöglicht es dem Anwendungsframework, Prozessgrenzen zu überschreiten und den Code der Android-Systemdienste aufzurufen. Dadurch können High-Level-Framework-APIs mit Android-Systemdiensten interagieren. Auf der Ebene des Anwendungsframeworks ist diese Kommunikation dem Entwickler verborgen und die Dinge scheinen "einfach zu funktionieren".
  • Systemdienste. Systemdienste sind modulare, fokussierte Komponenten wie Window Manager, Search Service oder Notification Manager. Die von den Anwendungsframework-APIs bereitgestellte Funktionalität kommuniziert mit Systemdiensten, um auf die zugrunde liegende Hardware zuzugreifen. Android enthält zwei Gruppen von Diensten: System (wie Window Manager und Notification Manager) und Medien (Dienstleistungen beteiligt zu spielen und Aufnahmemedien).
  • Hardware - Abstraktionsschicht (HAL). Eine HAL definiert eine Standardschnittstelle, die von Hardwareanbietern implementiert werden muss, sodass Android keine Treiberimplementierungen auf niedrigerer Ebene erkennen kann. Die Verwendung einer HAL ermöglicht es Ihnen, Funktionalität zu implementieren, ohne das übergeordnete System zu beeinflussen oder zu modifizieren. HAL-Implementierungen werden in Module gepackt und zum entsprechenden Zeitpunkt vom Android-System geladen. Weitere Einzelheiten finden Sie Hardware Abstraction Layer (HAL) .
  • Linux - Kernel. Die Entwicklung Ihrer Gerätetreiber ähnelt der Entwicklung eines typischen Linux-Gerätetreibers. Android verwendet eine Version des Linux - Kernels mit einigen speziellen Zusätzen wie Low Memory Killer (ein Speichermanagementsystem , das aggressiver bei der Erhaltung Speicher), Wake - Schlösser (a PowerManager System Service), der Binder IPC - Treiber und andere Funktionen wichtig für eine mobile eingebettete Plattform. Diese Ergänzungen dienen in erster Linie der Systemfunktionalität und wirken sich nicht auf die Treiberentwicklung aus. Sie können jede Version des Kernels verwenden, solange sie die erforderlichen Funktionen (wie den Binder-Treiber) unterstützt. Wir empfehlen jedoch, die neueste Version des Android-Kernels zu verwenden. Weitere Informationen finden Sie Gebäude Kerneln .

HAL-Schnittstellendefinitionssprache (AIDL/HIDL)

Android 8.0 Wieder architected die Android O Rahmen (in einem Projekt als Treble bekannt), um es einfacher, schneller und kostengünstiger für die Hersteller zu Update - Geräten auf eine neue Version von Android. In dieser neuen Architektur spezifiziert die HAL-Schnittstellendefinitionssprache (HIDL, ausgesprochen "hide-l") die Schnittstelle zwischen einer HAL und ihren Benutzern, wodurch das Android-Framework ersetzt werden kann, ohne die HALs neu zu erstellen. In Android 10 wurden HIDL-Funktionen in AIDL integriert. Seitdem ist HIDL veraltet und wird nur von Subsystemen verwendet, die noch nicht in AIDL konvertiert wurden.

Treble trennt die Vendor-Implementierung (gerätespezifische, untergeordnete Software, die von Siliziumherstellern geschrieben wurde) vom Android-OS-Framework über eine neue Vendor-Schnittstelle. Vendors oder SOC - Hersteller bauen HALs einmal und legen Sie sie in einer /vendor Partition auf dem Gerät; der Rahmen, in einer eigenen Partition kann dann mit einem ersetzt werden Over-the-Air (OTA) Update ohne den HALs neu zu kompilieren.

Der Unterschied zwischen der Legacy-Android-Architektur und der aktuellen, IDL-basierten Architektur liegt in der Verwendung der Vendor-Schnittstelle:

  • In Android 7.x und früheren Versionen existiert keine formale Anbieterschnittstelle, daher müssen Gerätehersteller große Teile des Android-Codes aktualisieren, um ein Gerät auf eine neuere Version von Android zu verschieben:

    Abbildung 2. Legacy - Android - Update - Umgebung
  • In Android 8.0 und höher bietet eine neue stabile Anbieterschnittstelle Zugriff auf die hardwarespezifischen Teile von Android, sodass Gerätehersteller neue Android-Versionen einfach durch die Aktualisierung des Android-Betriebssystem-Frameworks bereitstellen können – ohne zusätzlichen Aufwand für die Siliziumhersteller:

    Abbildung 3. Aktuelle Android - Update - Umgebung

Alle neuen Geräte, die mit Android 8.0 und höher auf den Markt kommen, können die neue Architektur nutzen. Um sicherzustellen , Vorwärtskompatibilität von Lieferanten Implementierungen ist die Anbieter - Schnittstelle durch die validierte Vendor Test Suite (VTS) , die die analog ist Compatibility Test Suite (CTS) . Sie können VTS verwenden, um HAL- und OS-Kernel-Tests sowohl in Legacy- als auch in aktuellen Android-Architekturen zu automatisieren.

Architekturressourcen

Einzelheiten zur Android-Architektur finden Sie in den folgenden Abschnitten:

  • HAL - Typen . Beschreibt gebundene, Passthrough-, Same-Process (SP) und Legacy-HALs.
  • AIDL . Dokumentation über AIDL, ob allgemein oder als HAL-Schnittstelle.
  • HIDL (General) . Enthält allgemeine Informationen über die Schnittstelle zwischen einer HAL und ihren Benutzern.
  • HIDL (C ++) . Enthält Details zum Erstellen von C++-Implementierungen von HIDL-Schnittstellen.
  • HIDL (Java) . Enthält Details zum Java-Frontend für HIDL-Schnittstellen.
  • ConfigStore HAL . Beschreibt APIs für den Zugriff auf schreibgeschützte Konfigurationselemente, die zum Konfigurieren des Android-Frameworks verwendet werden.
  • Gerätebaum Overlays . Enthält Details zur Verwendung von Device Tree Overlays (DTOs) in Android.
  • Vendor Mutter Development Kit (VNDK) . Beschreibt den Satz herstellerexklusiver Bibliotheken zum Implementieren von Anbieter-HALs.
  • Vendor Interface Object (VINTF) . Beschreibt die Objekte, die relevante Informationen über ein Gerät aggregieren und diese Informationen über eine abfragbare API verfügbar machen.
  • SELinux für Android 8.0 . Details zu SELinux-Änderungen und -Anpassungen.

Zusätzlich zu den Ressourcen auf dieser Seite, die Mitglieder des Treble - Teams veröffentlicht Treble: Fast Software - Updates durch ein Gleichgewicht in einer Active Software Ecosystem von Global Erstellen verteilter Stakeholder . Das Paper ist für ACM-Mitglieder kostenlos und Nichtmitglieder können das Abstract kaufen oder lesen.