Od 27 marca 2025 r. zalecamy używanie android-latest-release zamiast aosp-main do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Warstwa abstrakcji sprzętowej (HAL) to typ warstwy abstrakcji ze standardowym interfejsem, który mogą implementować dostawcy sprzętu. HAL umożliwia dostawcom sprzętu implementowanie funkcji niskiego poziomu związanych z poszczególnymi urządzeniami bez wpływu na kod na wyższych poziomach lub jego modyfikacji.
Wymagane warunki
Poniżej znajdziesz definicje terminów używanych w tej sekcji dokumentacji:
Język definiowania interfejsu Androida (AIDL)
Język podobny do Javy, używany do definiowania interfejsów w sposób niezależny od używanego języka programowania. AIDL umożliwia komunikację między klientami HAL a usługami HAL.
Binderized HAL
HAL, który komunikuje się z innymi procesami za pomocą wywołań komunikacji między procesami (IPC) za pomocą bindera. Binderized HALs działają w oddzielnym procesie od klienta, który z nich korzysta.
Binderized HALs są rejestrowane w menedżerze usług, aby klienci mogli korzystać z ich funkcji. Interfejsy HAL napisane na potrzeby Androida 8 i nowszych są skompilowane w binderze.
Klient HAL
Proces, który uzyskuje dostęp do usługi HAL.
Interfejs HAL
Interfejs wspólny używany przez klienta HAL i usługę do komunikacji.
Usługa HAL
Kod związany z konkretnym sprzętem, np. kod, który komunikuje się z kamerą Twojego urządzenia. Musisz wdrożyć wszystkie wymagane HAL-e wymienione w macierz kompatybilności dla wersji, na którą kierujesz swoją partycję dostawcy.
Więcej informacji o matrycach zgodności znajdziesz w artykule Matryce zgodności.
Możesz też utworzyć nowy interfejs HAL lub rozszerzyć interfejs HAL, aby obsługiwać unikalne funkcje sprzętu.
Język definiowania interfejsu sprzętowego (HIDL)
Język używany do definiowania interfejsów w sposób niezależny od używanego języka programowania. HIDL umożliwia komunikację między klientami HAL a usługami HAL.
android.hidl.memory@1.0 (dostarcza system Android, zawsze opakowany)
android.hardware.renderscript@1.0
Zawinięta HAL
usługę HAL utworzoną przed Androidem 8, ale zapakowaną w opakowanie AIDL lub HIDL, aby działała z Androidem 8 lub nowszym.
Co dalej?
Aby dowiedzieć się, jak zaimplementować usługę HAL, zapoznaj się z dokumentem AIDL dla HAL-i.
Aby dowiedzieć się, jak utworzyć lub rozszerzyć istniejący interfejs HAL, zapoznaj się z artykułem Załączone rozszerzone interfejsy.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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)."]]