Уровень аппаратной абстракции (HAL) — это тип уровня абстракции со стандартным интерфейсом для реализации производителями оборудования. HAL позволяет производителям оборудования реализовывать низкоуровневые, специфичные для устройства функции без влияния на код в более высоких уровнях или его модификации.
Обязательные условия
Ниже приведён список определений терминов, используемых в этом разделе документации:
- Язык определения интерфейса Android (AIDL)
- Язык, похожий на Java, используемый для определения интерфейсов независимо от используемого языка программирования. AIDL обеспечивает связь между клиентами HAL и службами HAL.
- Связанный HAL
- HAL, взаимодействующий с другими процессами с помощью вызовов межпроцессного взаимодействия (IPC) Binder . HAL, использующие Binder, работают в отдельном процессе от клиента, который их использует. HAL, использующие Binder, регистрируются в диспетчере служб, чтобы клиенты могли получить доступ к их возможностям. HAL, написанные для Android 8 и выше, используют Binder.
- Клиент 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 .
- Чтобы узнать, как создать или расширить существующий HAL, обратитесь к разделу «Прикрепленные расширенные интерфейсы» .