Eine Hardwareabstraktionsschicht (HAL) ist eine Art Abstraktionsschicht mit einer Standardschnittstelle, die Hardwareanbieter implementieren können. Mit einem HAL können Hardwareanbieter gerätespezifische Funktionen auf niedrigerer Ebene implementieren, ohne Code in höheren Ebenen zu beeinträchtigen oder zu ändern.
Erforderliche Bedingungen
Im Folgenden finden Sie eine Liste mit Definitionen der in diesem Abschnitt der Dokumentation verwendeten Begriffe:
- Android Interface Definition Language (AIDL)
- Eine Java-ähnliche Sprache, mit der Schnittstellen unabhängig von der verwendeten Programmiersprache definiert werden. AIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Diensten.
- Binderisierte HAL
- Eine HAL, die über Binder-IPC-Aufrufe mit anderen Prozessen kommuniziert. Binderized-HALs werden in einem separaten Prozess vom Client ausgeführt, der sie verwendet. Binderized-HALs werden bei einem Dienstmanager registriert, damit Clients auf ihre Funktionen zugreifen können. HALs, die für Android 8 und höher geschrieben wurden, sind binderisiert.
- HAL-Client
- Der Prozess, der auf den HAL-Dienst zugreift.
- HAL-Schnittstelle
- Die gemeinsame Schnittstelle, die sowohl vom HAL-Client als auch vom Dienst für die Kommunikation verwendet wird.
- HAL-Dienst
Der hardwarespezifische Code, z. B. der Code, der mit der Kamera Ihres Geräts kommuniziert. Sie müssen alle erforderlichen HALs, die in der Kompatibilitätsmatrix für die von Ihnen in Ihrer Anbieterpartition angegebene Version aufgeführt sind, implementieren. Weitere Informationen zu Kompatibilitätsmatrizen finden Sie unter Kompatibilitätsmatrizen.
Sie können auch eine neue HAL-Schnittstelle erstellen oder die Schnittstelle eines HAL erweitern, um die besonderen Funktionen Ihrer Hardware zu unterstützen.
- Hardware Interface Definition Language (HIDL)
Eine Sprache, mit der Schnittstellen unabhängig von der verwendeten Programmiersprache definiert werden. HIDL ermöglicht die Kommunikation zwischen HAL-Clients und HAL-Diensten.
- Same Process (SP) HAL
Eine eingeschränkte Gruppe von umbrochenen HALs. Die Mitgliedschaft in der Gruppe wird von Google verwaltet. SP‑HALs umfassen:
- Stabile C-Mapper 5-HAL
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (vom Android-System bereitgestellt, immer umschlossen)
- android.hardware.renderscript@1.0
- Wrapped HAL
Ein HAL-Dienst, der vor Android 8 erstellt wurde, aber in einen AIDL- oder HIDL-Wrapper eingebunden wurde, um mit Android 8 und höher zu funktionieren.
Und jetzt?
- Informationen zum Implementieren eines HAL-Dienstes finden Sie unter AIDL für HALs.
- Informationen zum Erstellen oder Erweitern eines vorhandenen HAL finden Sie unter Angehängte erweiterte Schnittstellen.