В 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
.
Сквозные 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