Omówienie warstwy abstrakcji sprzętu

W systemie Android 8.0 i nowszych warstwach niższego poziomu zostały przepisane w celu przyjęcia nowej, bardziej modułowej architektury. Urządzenia z systemem Android 8.0 i nowszym muszą obsługiwać warstwy HAL zapisane w języku HIDL, z kilkoma wyjątkami wymienionymi poniżej. Te HAL mogą być spoiwa lub przepuszczane. W systemie Android 11 obsługiwane są również warstwy HAL napisane w formacie AIDL. Wszystkie warstwy AIDL HAL są spoiwowe.

  • Spoiwowe HAL . HAL wyrażone w języku definicji interfejsu HAL (HIDL) lub języku definicji interfejsu Androida (AIDL). Te warstwy HAL zastępują zarówno konwencjonalne, jak i starsze warstwy HAL używane we wcześniejszych wersjach Androida. W powiązanej warstwie HAL platforma Android i warstwy HAL komunikują się ze sobą za pomocą wywołań komunikacji między procesami spoiwa (IPC). Wszystkie urządzenia uruchamiane z systemem Android 8.0 lub nowszym muszą obsługiwać tylko powiązane warstwy HAL.

  • Przejściowe warstwy HAL . Konwencjonalne lub starsze warstwy HAL opakowane w warstwę HIDL. Te warstwy HAL otaczają istniejące warstwy HAL i mogą obsługiwać warstwę HAL w trybach spoiwowych i tego samego procesu (przejściowego). Urządzenia uaktualniające się do systemu Android 8.0 mogą korzystać z przejściowych warstw HAL.

Wymagania trybu HAL

Urządzenie Przejść przez Oprawiony
Uruchom z Androidem 8.0 Warstwy HAL wymienione w przejściowych warstwach HAL muszą być przesyłane. Wszystkie inne warstwy HAL są powiązane (w tym warstwy HAL będące rozszerzeniami dostawców).
Zaktualizuj do Androida 8.0 Warstwy HAL wymienione w przejściowych warstwach HAL muszą być przesyłane. HAL wymienione w kategorii HAL spoiwowe muszą być spoiwowe.
Wszystkie inne warstwy HAL dostarczone przez obraz dostawcy mogą działać w trybie przekazującym LUB powiązanym. W urządzeniu w pełni zgodnym z Treble, wszystko to musi zostać spoiwo.

Spoiwowe HAL

System Android wymaga powiązania następujących warstw HAL na wszystkich urządzeniach z systemem Android, niezależnie od tego, czy są to urządzenia uruchamiające, czy urządzenia uaktualniające:

  • android.hardware.biometrics.fingerprint@2.1 . Zastępuje fingerprintd , którego nie ma już w systemie Android 8.0.
  • android.hardware.configstore@1.0 . Nowość w Androidzie 8.0.
  • android.hardware.dumpstate@1.0 . Oryginalny interfejs dostarczony przez tę warstwę HAL nie mógł zostać podstawiony i został zmieniony. Z tego powodu dumpstate_board musi zostać ponownie zaimplementowany na danym urządzeniu (jest to opcjonalna warstwa HAL).
  • android.hardware.graphics.allocator@2.0 . Wymagane do powiązania w systemie Android 8.0, aby deskryptory plików nie musiały być współdzielone między procesami zaufanymi i niezaufanymi.
  • android.hardware.radio@1.0 . Zastępuje interfejs dostarczony przez rild , który żyje w swoim własnym procesie.
  • android.hardware.usb@1.0 . Nowość w Androidzie 8.0.
  • android.hardware.wifi@1.0 . Nowość w systemie Android 8.0 zastępuje starszą bibliotekę Wi-Fi HAL, która została załadowana do system_server
  • android.hardware.wifi.supplicant@1.0 . Interfejs HIDL dla istniejącego procesu wpa_supplicant .

Przejściowe warstwy HAL

Android wymaga, aby następujące warstwy HAL działały w trybie przekazywania na wszystkich urządzeniach z Androidem, niezależnie od tego, czy są to urządzenia uruchamiające, czy uaktualniające:

  • android.hardware.graphics.mapper@1.0 . Mapuje pamięć w procesie, w którym żyje.
  • android.hardware.renderscript@1.0 . Przekazuje elementy w tym samym procesie (odpowiednik openGL ).

Wszystkie warstwy HAL niewymienione powyżej muszą zostać spoiwowane dla urządzeń startowych.

HAL tego samego procesu

Warstwy HAL tego samego procesu (SP-HAL) są zawsze otwierane w tym samym procesie, w którym są używane. Obejmują one wszystkie HAL niewyrażone w HIDL, a także takie, które nie są spoiwe. Członkostwo w zestawie SP-HAL jest kontrolowane wyłącznie przez firmę Google, bez wyjątków.

SP-HAL obejmują:

  • openGL
  • Vulkan
  • android.hidl.memory@1.0 (dostarczany przez system Android, zawsze przejściowy)
  • android.hardware.graphics.mapper@1.0
  • android.hardware.renderscript@1.0