В 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, перечисленные в разделе «Связанные HAL», должны быть «связанными». |
Все остальные HAL, предоставляемые образом поставщика, могут находиться в режиме сквозной передачи ИЛИ режиме связывания. В полностью совместимом с Treble устройстве все это должно быть скреплено. |
Связанные HAL
Android требует, чтобы следующие HAL были привязаны на всех устройствах 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