Обзор уровня абстракции оборудования (HAL)

Уровень аппаратной абстракции (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 и более поздними версиями.

Что дальше?