Ab dem 27. März 2025 empfehlen wir, android-latest-release anstelle von aosp-main zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Eine Hardwareabstraktionsschicht (HAL) ist eine Art Abstraktionsschicht mit einer Standardschnittstelle, die von Hardwareanbietern implementiert werden muss. Mit einer HAL können Hardwareanbieter gerätespezifische Funktionen auf niedriger Ebene implementieren, ohne den Code in höheren Schichten zu beeinflussen oder zu ändern.
Erforderliche Bedingungen
Im Folgenden finden Sie eine Liste der Definitionen für Begriffe, die in diesem Abschnitt der Dokumentation verwendet werden:
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 mit anderen Prozessen über Binder-IPC-Aufrufe (Inter-Process Communication) kommuniziert. Binderisierte HALs werden in einem separaten Prozess vom Client ausgeführt, der sie verwendet.
gebundene 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 gebunden.
HAL-Client
Der Prozess, der auf den HAL-Dienst zugreift.
HAL-Schnittstelle
Die gemeinsame Schnittstelle, die sowohl vom HAL-Client als auch vom Dienst zur Kommunikation verwendet wird.
HAL-Dienst
Der hardwarespezifische Code, z. B. der Code, der mit der Kamera Ihres Geräts kommuniziert. Sie müssen alle in der Kompatibilitätsmatrix aufgeführten erforderlichen HALs für die Version implementieren, auf die Sie in Ihrer Anbieterpartition abzielen.
Weitere Informationen zu Kompatibilitätsmatrizen finden Sie unter Kompatibilitätsmatrizen.
Sie können auch eine neue HAL-Schnittstelle erstellen oder die Schnittstelle einer HAL erweitern, um die einzigartigen Funktionen Ihrer Hardware zu unterstützen.
Hardware Interface Definition Language (HIDL)
Eine Sprache, mit der Oberflächen 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 Anzahl von verpackten HALs. Die Mitgliedschaft im Set wird von Google verwaltet. Zu den SP-HALs gehören:
Stabile C-Mapper 5 HAL
OpenGL
Vulkan
android.hidl.memory@1.0 (vom Android-System bereitgestellt, immer gekapselt)
android.hardware.renderscript@1.0
Verpackte HAL
Ein HAL-Dienst, der vor Android 8 erstellt wurde, aber in einen AIDL- oder HIDL-Wrapper gewickelt 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.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Hardware abstraction layer (HAL) overview\n\nA *hardware abstraction layer (HAL)* is type of abstraction layer with a\nstandard interface for hardware vendors to implement. A HAL allows hardware\nvendors to implement lower-level, device-specific features without affecting or\nmodifying code in higher-level layers.\n| **Note:** HALs existed before Android 8. However, Android 8 ensured each HAL had a standard interface. For an explanation of HAL architecture before Android 8, refer to [Legacy HALs](/docs/core/architecture/hal/archive).\n\nRequired terms\n--------------\n\nFollowing is a list of definitions for terms used in this section of\ndocumentation:\n\n*Android Interface Definition Language (AIDL)*\n: A Java-like language used to define interfaces in a way that is independent of\n the programming language being used. AIDL allows communication between\n HAL clients and HAL services.\n\n*Binderized HAL*\n: A HAL that communicates with other processes\n using\n [binder inter-process communication (IPC)](/docs/core/architecture/hidl/binder-ipc)\n calls. Binderized HALs run in a separate process from the client that uses them.\n Binderized HALs are registered with a service manager so that clients can\n access their capabilities. HALs written for Android 8 and higher are\n binderized.\n\n*HAL client*\n: The process that accesses the HAL service.\n\n*HAL interface*\n: The common interface used by both the HAL client and service to communicate.\n\n*HAL service*\n\n: The hardware-specific code, such as the code that talks to your specific\n device's camera. You must implement all required HALs listed in the\n compatibility matrix for the release you target in your vendor partition.\n For further information on compatibility matrixes, see\n [Compatibility matrixes](/docs/core/architecture/vintf/comp-matrices).\n\n You can also create a new HAL interface, or extend the interface of a HAL, to\n support your hardware's unique capabilities.\n\n*Hardware Interface Definition Language (HIDL)*\n\n: A language used to define interfaces in a way that is independent of the\n programming language being used. HIDL enables communication between\n HAL clients and HAL services.\n\n | **Note:** As of Android 13, HIDL has been deprecated. Instead of HIDL, you should use Android Interface Definition Language (AIDL) for HALs. HALs previously written using [HIDL](/docs/core/architecture/hidl) are supported.\n\n*Same Process (SP) HAL*\n\n: A restricted set of wrapped HALs. Membership in the set is controlled by\n Google. SP HALs include:\n\n - Stable C mapper 5 HAL\n - OpenGL\n - Vulkan\n - android.hidl.memory@1.0 (provided by the Android system, always wrapped)\n - android.hardware.renderscript@1.0\n\n | **Note:** Some HAL implementations wrap legacy interfaces, such as those in `libhardware`, in an AIDL or HIDL wrapper.\n\n*Wrapped HAL*\n\n: A HAL service that was created before Android 8, but has been wrapped in an\n AIDL or HIDL wrapper to work with Android 8 and higher.\n\nWhat's next?\n------------\n\n- To learn how to implement a HAL service, refer to [AIDL for HALs](/docs/core/architecture/aidl/aidl-hals).\n- To learn how to create or extend an existing HAL, refer to [Attached extended interfaces](/docs/core/architecture/aidl/aidl-hals#attached-extensions)."]]