Google стремится продвигать расовую справедливость для черных сообществ. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

HAL Типы

В Android 8.0 и более поздних версиях слои нижнего уровня переписаны, чтобы принять новую, более модульную архитектуру. Устройства под управлением Android 8.0 и выше должны поддерживать HAL, написанные на HIDL, с некоторыми исключениями, перечисленными ниже. Эти HAL могут быть раздвоенными или проходными. В Android R также поддерживаются HAL, написанные на AIDL. Все AIDL HAL являются бандеризованными.

  • Binderized HALs. HAL, выраженные на языке определения интерфейса HAL (HIDL) или языке определения интерфейса Android (AIDL). Эти HAL заменяют как обычные, так и устаревшие HAL, используемые в более ранних версиях Android. В Binderized HAL платформа Android и HAL взаимодействуют друг с другом, используя вызовы межпроцессного взаимодействия (IPC). Все устройства, запускаемые с Android 8.0 или более поздней версии, должны поддерживать только двоичные HAL.
  • Сквозной HALS. Обернутый HIDL обычный или устаревший HAL . Эти HAL обертывают существующие HAL и могут обслуживать HAL в биндеризованном и однопроцессном (сквозном) режимах. Устройства, обновляющиеся до Android 8.0, могут использовать сквозные HAL.

Требования к режиму HAL

устройство Пройти через Binderized
Запустить с Android 8.0 HAL, перечисленные в Passthrough HAL, должны быть passthrough. Все другие HAL являются бандеризованными (включая HAL, которые являются расширениями поставщиков).
Обновление до Android 8.0 HAL, перечисленные в Passthrough HAL, должны быть passthrough. HAL, перечисленные в Binderized HAL, должны быть объединены.
Все другие HAL, предоставляемые образом поставщика, могут находиться в режиме сквозной передачи или в режиме объединения. В полностью Treble-совместимом устройстве все они должны быть объединены.

Binderized HALs

Android требует, чтобы следующие HALS были объединены на всех устройствах Android независимо от того, являются ли они устройствами запуска или обновления:

  • android.hardware.biometrics.fingerprint@2.1 . Заменяет fingerprintd которого больше нет в Android 8.0.
  • android.hardware.configstore@1.0 . Новое в Android 8.0.
  • android.hardware.dumpstate@1.0 . Оригинальный интерфейс, предоставленный этим HAL, не может быть отрегулирован и был изменен. Из-за этого dumpstate_board необходимо повторно реализовать на данном устройстве (это необязательный HAL).
  • android.hardware.graphics.allocator@2.0 . Требуется быть объединенным в Android 8.0, чтобы дескрипторы файлов не должны были использоваться совместно доверенными и ненадежными процессами.
  • android.hardware.radio@1.0 . Заменяет интерфейс, предоставленный rild который живет в своем собственном процессе.
  • android.hardware.usb@1.0 . Новое в Android 8.0.
  • android.hardware.wifi@1.0 . Новое в Android 8.0, заменяет устаревшую библиотеку Wi-Fi HAL, которая была загружена в system_server .
  • android.hardware.wifi.supplicant@1.0 . HIDL-интерфейс поверх существующего процесса wpa_supplicant .

ПРИМЕЧАНИЕ . Android предоставляет следующие интерфейсы HIDL, которые всегда будут в режиме binderized: android.frameworks.* , android.system.* И android.hidl.* (За исключением android.hidl.memory@1.0 как описано ниже).

Сквозной HALS

Android требует, чтобы следующие HAL были в режиме сквозного доступа на всех устройствах Android независимо от того, являются ли они запускающими устройствами или устройствами обновления:

  • android.hardware.graphics.mapper@1.0 . Карта памяти в процессе, в котором она живет.
  • android.hardware.renderscript@1.0 . Пропускает элементы в том же процессе (эквивалентно openGL ).

Все HAL, не перечисленные выше, должны быть объединены для запускаемых устройств.

HALs того же процесса

HAL одного и того же процесса (SP-HAL) всегда открываются в том же процессе, в котором они используются. Они включают в себя все HAL, не выраженные в HIDL, а также те, которые не разделены на две категории. Членство в наборе SP-HAL контролируется только Google, без исключений.

SP-HAL включают в себя следующее:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (предоставляется системой Android, всегда проходной)
  • android.hardware.graphics.mapper@1.0 .
  • android.hardware.renderscript@1.0

Обычные и устаревшие HAL

Обычные HAL (устарели в Android 8.0) - это интерфейсы, которые соответствуют определенному именованному и версионному двоичному интерфейсу приложения (ABI). Основная часть системных интерфейсов Android ( камера , аудио , датчики и т. Д.) Представлена ​​в виде обычных HAL, которые определены в разделе hardware / libhardware / include / hardware .

Устаревшие HAL (также устаревшие в Android 8.0) - это интерфейсы, предшествующие традиционным HAL. Несколько важных подсистем (Wi-Fi, уровень радиоинтерфейса и Bluetooth) являются устаревшими HAL. Хотя не существует унифицированного или стандартизированного способа описания устаревшего HAL, все, что предшествует Android 8.0, но не является традиционным HAL, является устаревшим HAL. Части некоторых устаревших HAL содержатся в libhardware_legacy , в то время как другие части разбросаны по всей базе кода.