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

Уровень абстракции оборудования (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 и выше.

Что дальше?