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

Что дальше?