Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release вместо aosp-main для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Уровень абстракции оборудования (HAL) — это тип уровня абстракции со стандартным интерфейсом для реализации поставщиками оборудования. HAL позволяет поставщикам оборудования реализовывать функции более низкого уровня, специфичные для устройств, не затрагивая и не изменяя код в слоях более высокого уровня.
Требуемые термины
Ниже приведен список определений терминов, используемых в этом разделе документации:
Язык определения интерфейса Android (AIDL)
Похожий на Java язык, используемый для определения интерфейсов способом, который не зависит от используемого языка программирования. AIDL обеспечивает связь между клиентами HAL и службами HAL.
Связанный HAL
HAL, который взаимодействует с другими процессами с помощью вызовов межпроцессного взаимодействия (IPC) связующего. Связанные HAL запускаются в отдельном процессе от клиента, который их использует. Связанные HAL регистрируются в диспетчере служб, чтобы клиенты могли получить доступ к их возможностям. HAL, написанные для Android 8 и выше, являются связанными.
HAL-клиент
Процесс, обращающийся к службе HAL.
HAL-интерфейс
Общий интерфейс, используемый как клиентом HAL, так и службой для связи.
HAL-сервис
Код, специфичный для оборудования, например, код, который взаимодействует с камерой вашего конкретного устройства. Вы должны реализовать все требуемые HAL, перечисленные в матрице совместимости для целевого выпуска в разделе поставщика. Для получения дополнительной информации о матрицах совместимости см. Матрицы совместимости .
Вы также можете создать новый интерфейс HAL или расширить интерфейс HAL для поддержки уникальных возможностей вашего оборудования.
Язык определения интерфейса оборудования (HIDL)
Язык, используемый для определения интерфейсов способом, который не зависит от используемого языка программирования. HIDL обеспечивает связь между клиентами HAL и службами HAL.
Тот же процесс (SP) HAL
Ограниченный набор обернутых HAL. Членство в наборе контролируется Google. SP HAL включают:
Стабильный C-картограф 5 HAL
OpenGL
Вулкан
android.hidl.memory@1.0 (предоставляется системой Android, всегда упакован)
android.hardware.renderscript@1.0
HAL в упаковке
Служба HAL, созданная до Android 8, но заключенная в оболочку AIDL или HIDL для работы с Android 8 и выше.
Что дальше?
Чтобы узнать, как реализовать службу HAL, обратитесь к AIDL для HAL .
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-07-29 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)."]]