В Android 8.0 и более поздних версиях уровни нижнего уровня переписаны, чтобы принять новую, более модульную архитектуру. Устройства под управлением Android 8.0 и выше должны поддерживать HAL, написанные на HIDL, за некоторыми исключениями, перечисленными ниже. Эти HAL могут быть связующими или сквозными. В Android 11 также поддерживаются HAL, написанные на AIDL. Все HAL AIDL обезврежены.
- Связанные HAL. HAL, выраженные на языке определения интерфейса HAL (HIDL) или языке определения интерфейса Android (AIDL). Эти HAL заменяют как обычные, так и устаревшие HAL, используемые в более ранних версиях Android. В Binderized HAL платформа Android и HAL взаимодействуют друг с другом с помощью вызовов связывания между процессами (IPC). Все устройства, запускаемые с Android 8.0 или более поздней версии, должны поддерживать только связанные HAL.
- Сквозные HAL. Обычный или устаревший HAL в оболочке HIDL. Эти HAL обертывают существующие HAL и могут обслуживать HAL в режимах связывания и того же процесса (сквозной). Устройства, обновляющиеся до Android 8.0, могут использовать сквозные HAL.
Требования к режиму HAL
Устройство | Пройти через | Связанный |
---|---|---|
Запуск с Android 8.0 | HAL, перечисленные в Passthrough HAL , должны быть сквозными. | Все остальные HAL связаны (включая HAL, которые являются расширениями поставщика). |
Обновление до Android 8.0 | HAL, перечисленные в Passthrough HAL , должны быть сквозными. | HAL, перечисленные в Binderized HAL , должны быть скреплены. |
Все другие HAL, предоставляемые образом поставщика, могут быть в режиме сквозного ИЛИ связывания. В устройстве, полностью совместимом с Treble, все они должны быть перевязаны. |
Связанные HAL
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, которые всегда будут в режиме связывания: android.frameworks.*
, android.system.*
и android.hidl.*
(кроме android.hidl.memory@1.0
, как описано ниже).
Сквозные HAL
Android требует, чтобы следующие HAL находились в режиме сквозной передачи на всех устройствах Android, независимо от того, являются ли они устройствами запуска или обновления:
-
android.hardware.graphics.mapper@1.0
. Сопоставляет память с процессом, в котором она живет. -
android.hardware.renderscript@1.0
. Передает элементы в один и тот же процесс (эквивалентноopenGL
).
Все HAL, не перечисленные выше, должны быть привязаны к устройствам запуска.
HAL того же процесса
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 , в то время как другие части разбросаны по кодовой базе.