Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Typy HAL

W systemie Android 8.0 i nowszym warstwy niższego poziomu są przepisywane w celu przyjęcia nowej, bardziej modułowej architektury. 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 mogą być spajane lub przepuszczane. W systemie Android 11 obsługiwane są również warstwy HAL napisane w AIDL. Wszystkie warstwy HAL AIDL są spajane.

  • Sklejone warstwy HAL. 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 systemu Android. W powiązanej warstwie HAL struktura systemu Android i warstwy HAL komunikują się ze sobą przy użyciu wywołań komunikacji między procesami (IPC) spinacza. Wszystkie urządzenia uruchamiane z systemem Android 8.0 lub nowszym muszą obsługiwać tylko powiązane warstwy HAL.
  • Przejściowe warstwy HAL. Tradycyjny lub starszy HAL owinięty HIDL. Te warstwy HAL zawijają istniejące warstwy HAL i mogą obsługiwać warstwę HAL w trybie powiązanym i tego samego procesu (passthrough). Urządzenia aktualizujące do systemu Android 8.0 mogą używać passthrough HAL.

Wymagania dotyczące trybu HAL

Urządzenie Przejść przez Binderized
Uruchom z systemem Android 8.0 Warstwy HAL wymienione w przejściowych Warstwach HAL muszą być przejściami. Wszystkie inne warstwy HAL są spajane (w tym warstwy HAL, które są rozszerzeniami dostawcy).
Uaktualnij do Androida 8.0 Warstwy HAL wymienione w przejściowych Warstwach HAL muszą być przejściami. Warstwy HAL wymienione w Binderized HAL muszą być spięte.
Wszystkie inne warstwy HAL dostarczone przez obraz dostawcy mogą być w trybie przekazywania LUB w trybie bindowania. W urządzeniu w pełni zgodnym z wysokimi tonami wszystkie z nich muszą być spięte.

Sklejone warstwy HAL

Android wymaga powiązania następujących warstw HALS na wszystkich urządzeniach z Androidem, niezależnie od tego, czy są to urządzenia uruchamiające, czy aktualizują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ł być podklejony 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ć udostępniane między zaufanymi i niezaufanymi procesami.
  • 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 na system_server .
  • android.hardware.wifi.supplicant@1.0 . Interfejs HIDL nad istniejącym procesem wpa_supplicant .

UWAGA : Android zapewnia następujące interfejsy HIDL, które zawsze będą w trybie powiązanym: android.frameworks.* , android.system.* I android.hidl.* (Z wyjątkiem android.hidl.memory@1.0 jak opisano poniżej).

Przejściowe warstwy HAL

Android wymaga, aby następujące warstwy HAL były w trybie przekazywania na wszystkich urządzeniach z systemem Android, niezależnie od tego, czy są to urządzenia uruchamiające, czy aktualizują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 (odpowiednik openGL ).

Wszystkie warstwy HAL niewymienione powyżej muszą być spięte dla urządzeń uruchamiających.

Warstwy 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 warstwy HAL niewyrażone w HIDL, a także takie, które nie są spajane. Członkostwo w zestawie SP-HAL jest kontrolowane tylko przez Google, bez 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

Konwencjonalne i starsze warstwy HAL

Konwencjonalne warstwy HAL (przestarzałe w systemie Android 8,0) to interfejsy zgodne z określonym nazwanym i wersjonowanym interfejsem binarnym aplikacji (ABI). Większość interfejsów systemu Android ( kamera , dźwięk , czujniki itp.) Ma postać konwencjonalnych warstw HAL, które są zdefiniowane w sekcji hardware / libhardware / include / hardware .

Starsze warstwy HAL (również przestarzałe w systemie Android 8,0) to interfejsy starsze niż konwencjonalne warstwy HAL. Kilka ważnych podsystemów (Wi-Fi, warstwa interfejsu radiowego i Bluetooth) to starsze warstwy HAL. Chociaż nie ma jednolitego ani znormalizowanego sposobu opisania starszej warstwy HAL, wszystko, co jest starsze niż Android 8.0, a nie jest konwencjonalną warstwą HAL, jest starszą warstwą HAL. Części niektórych starszych warstw HAL są zawarte w libhardware_legacy , podczas gdy inne części są rozproszone w całej bazie kodu.