Google is committed to advancing racial equity for Black communities. See how.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Android-Architektur

Die Android-Systemarchitektur enthält die folgenden Komponenten:

Übersicht über die Android-Systemarchitektur
Abbildung 1. Android-Systemarchitektur
  • Anwendungsrahmen . 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 liefern können.
  • Binder IPC . Der IPC-Mechanismus (Binder Inter-Process Communication) ermöglicht es dem Anwendungsframework, Prozessgrenzen zu überschreiten und den Code der Android-Systemdienste aufzurufen. Auf diese Weise können Framework-APIs auf hoher Ebene mit Android-Systemdiensten interagieren. Auf der Ebene des Anwendungsframeworks ist diese Kommunikation für den Entwickler verborgen, und die Dinge scheinen "einfach zu funktionieren".
  • Systemdienste . Systemdienste sind modulare, fokussierte Komponenten wie Window Manager, Search Service oder Notification Manager. Die durch Anwendungsframework-APIs bereitgestellten Funktionen kommunizieren mit den Systemdiensten, um auf die zugrunde liegende Hardware zuzugreifen. Android umfasst zwei Gruppen von Diensten: System (z. B. Window Manager und Notification Manager) und Medien (Dienste zum Abspielen und Aufzeichnen von Medien).
  • Hardware-Abstraktionsschicht (HAL) . Eine HAL definiert eine Standardschnittstelle für Hardwareanbieter, die es Android ermöglicht, bei Treiberimplementierungen auf niedrigerer Ebene agnostisch zu sein. Mit einem HAL können Sie Funktionen implementieren, ohne das übergeordnete System zu beeinflussen oder zu ändern. HAL-Implementierungen werden in Module gepackt und zum entsprechenden Zeitpunkt vom Android-System geladen. Weitere Informationen finden Sie unter Hardware Abstraction Layer (HAL) .
  • Linux-Kernel . Das Entwickeln Ihrer Gerätetreiber ähnelt dem Entwickeln eines typischen Linux-Gerätetreibers. Android verwendet eine Version des Linux-Kernels mit einigen speziellen Ergänzungen wie Low Memory Killer (ein Speicherverwaltungssystem, das aggressiver bei der Speichererhaltung ist), Wake-Sperren (ein PowerManager Systemdienst), dem Binder IPC-Treiber und anderen wichtigen Funktionen 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 eine beliebige Version des Kernels verwenden, sofern diese die erforderlichen Funktionen unterstützt (z. B. den Binder-Treiber). Wir empfehlen jedoch die Verwendung der neuesten Version des Android-Kernels. Weitere Informationen finden Sie unter Erstellen von Kerneln .

HAL-Schnittstellendefinitionssprache (HIDL)

Android 8.0 hat das Android-Betriebssystem-Framework (in einem Projekt namens Treble ) neu entwickelt, um es Herstellern einfacher, schneller und kostengünstiger zu machen, Geräte auf eine neue Version von Android zu aktualisieren. In dieser neuen Architektur gibt die HAL-Schnittstellendefinitionssprache (HIDL, ausgesprochen "hide-l") die Schnittstelle zwischen einer HAL und ihren Benutzern an, sodass das Android-Framework ersetzt werden kann, ohne die HALs neu zu erstellen.

HIDL trennt die Herstellerimplementierung (gerätespezifische Software auf niedrigerer Ebene, die von Siliziumherstellern geschrieben wurde) über eine neue Herstellerschnittstelle vom Android-Betriebssystem-Framework. Anbieter oder SOC-Hersteller erstellen HALs einmal und platzieren sie in einer /vendor Partition auf dem Gerät. Das Framework in seiner eigenen Partition kann dann durch ein OTA-Update (Over-the-Air) ersetzt werden, ohne die HALs neu zu kompilieren.

Der Unterschied zwischen der alten Android-Architektur und der aktuellen HIDL-basierten Architektur besteht in der Verwendung der Herstellerschnittstelle:

  • In Android 7.x und früheren Versionen gibt es keine formale Herstellerschnittstelle. 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 Herstellerschnittstelle Zugriff auf die hardwarespezifischen Teile von Android, sodass Gerätehersteller neue Android-Versionen bereitstellen können, indem sie einfach das Android-Betriebssystem-Framework aktualisieren - ohne zusätzliche Arbeit der Siliziumhersteller:

    Abbildung 3. Aktuelle Android-Update-Umgebung

Alle neuen Geräte, die mit Android 8.0 und höher gestartet werden, können die neue Architektur nutzen. Um die Vorwärtskompatibilität von Herstellerimplementierungen sicherzustellen, wird die Herstellerschnittstelle von der Vendor Test Suite (VTS) validiert, die der Compatibility Test Suite (CTS) entspricht . Sie können VTS verwenden, um HAL- und OS-Kerneltests sowohl in älteren als auch in aktuellen Android-Architekturen zu automatisieren.

Architekturressourcen

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

  • HAL-Typen . Beschreibt Binderized-, Passthrough-, Same-Process- (SP) und Legacy-HALs.
  • HIDL (allgemein) . Enthält allgemeine Informationen zur Schnittstelle zwischen einem HAL und seinen 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 Gerätebaum-Overlays (DTOs) in Android.
  • Vendor Native Development Kit (VNDK) . Beschreibt den Satz von herstellerexklusiven Bibliotheken zum Implementieren von Hersteller-HALs.
  • Vendor Interface Object (VINTF) . Beschreibt die Objekte, die relevante Informationen zu einem Gerät zusammenfassen und diese Informationen über eine abfragbare API verfügbar machen.
  • SELinux für Android 8.0 . Details SELinux Änderungen und Anpassungen.

Zusätzlich zu den Ressourcen auf dieser Website veröffentlichten Mitglieder des Treble-Teams Treble: Schnelle Software-Updates, indem sie ein Gleichgewicht in einem aktiven Software-Ökosystem global verteilter Stakeholder herstellten . Das Papier ist für ACM-Mitglieder kostenlos und Nichtmitglieder können das Abstract kaufen oder lesen.