W Androidzie 8.0 i nowszych warstwy niższego poziomu są przepisywane, aby przyjąć nową, bardziej modułową architekturę. Urządzenia z systemem Android 8.0 lub nowszym muszą obsługiwać warstwy HAL napisane w języku HIDL, z kilkoma wyjątkami wymienionymi poniżej. Te warstwy HAL można związać lub przepuścić. W systemie Android 11 obsługiwane są również warstwy HAL napisane w języku AIDL. Wszystkie AIDL HAL są zbindowane.
Binderyzowane HAL . Wartości HAL wyrażone w języku definicji interfejsu HAL (HIDL) lub języku definicji interfejsu systemu Android (AIDL). Te warstwy HAL zastępują zarówno konwencjonalne, jak i starsze warstwy HAL używane we wcześniejszych wersjach Androida. W warstwie HAL Binderized platforma Android i warstwy HAL komunikują się ze sobą za pomocą wywołań komunikacji między procesami (IPC) wiązania. 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 HIDL Te warstwy HAL otaczają istniejące warstwy HAL i mogą obsługiwać warstwy HAL w trybach binderized i tego samego procesu (przekazywanie). Urządzenia uaktualniające do systemu Android 8.0 mogą korzystać z przekazywanych warstw HAL.
Wymagania trybu HAL
Urządzenie | Przejść przez | spojony |
---|---|---|
Uruchom z Androidem 8.0 | Warstwy HAL wymienione w przekazywaniu HAL muszą być przekazywane. | Wszystkie inne warstwy HAL są powiązane (w tym warstwy HAL, które są rozszerzeniami dostawców). |
Zaktualizuj do Androida 8.0 | Warstwy HAL wymienione w przekazywaniu HAL muszą być przekazywane. | HAL wymienione w Binderized HAL muszą być zbindowane. |
Wszystkie inne warstwy HAL dostarczone przez obraz dostawcy mogą być w trybie tranzytowym LUB powiązanym. W urządzeniu w pełni zgodnym ze standardem Treble wszystkie z nich muszą być zbindowane. |
Binderyzowane HAL
Android wymaga powiązania następujących HALS na wszystkich urządzeniach z Androidem, niezależnie od tego, czy są to urządzenia uruchamiające, czy uaktualniające:
-
android.hardware.biometrics.fingerprint@2.1
. Zastępujefingerprintd
, 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
. Oryginalnego interfejsu zapewnianego przez tę warstwę HAL nie można było dopasować i został zmieniony. Z tego powodudumpstate_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ć udostępniane między procesami zaufanymi i niezaufanymi. -
android.hardware.radio@1.0
. Zastępuje interfejs dostarczany przezrild
, który żyje we 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 dosystem_server
-
android.hardware.wifi.supplicant@1.0
. Interfejs HIDL nad istniejącym procesemwpa_supplicant
.
Przejściowe warstwy HAL
Android wymaga, aby następujące warstwy HAL był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
. Odwzorowuje pamięć na proces, w którym żyje. -
android.hardware.renderscript@1.0
. Przekazuje elementy w tym samym procesie (odpowiednikopenGL
).
Wszystkie warstwy HAL, które nie zostały wymienione powyżej, muszą być zbindowane dla urządzeń startowych.
HAL tego samego procesu
Warstwy HAL tego samego procesu (SP-HAL) zawsze otwierają się w tym samym procesie, w którym są używane. Obejmują one wszystkie HAL niewyrażane w HIDL, jak również niektóre, które nie są związane. Członkostwo w zestawie SP-HAL jest kontrolowane wyłącznie przez Google, bez żadnych wyjątków.
SP-HAL obejmują:
-
openGL
-
Vulkan
-
android.hidl.memory@1.0
(dostarczany przez system Android, zawsze przekazywany) -
android.hardware.graphics.mapper@1.0
android.hardware.renderscript@1.0