Omówienie warstwy abstrakcji sprzętowej (HAL)

Warstwa abstrakcji sprzętowej (HAL) to rodzaj warstwy abstrakcji ze standardowym interfejsem, który mogą implementować dostawcy sprzętu. HAL umożliwia dostawcom sprzętu implementowanie funkcji niższego poziomu, które są specyficzne dla danego urządzenia, bez wpływu na kod w warstwach wyższego poziomu i bez jego modyfikowania.

Wymagane terminy

Poniżej znajdziesz listę definicji terminów używanych w tej sekcji dokumentacji:

Język definiowania interfejsu Androida (AIDL)
Język podobny do Javy, który służy do definiowania interfejsów w sposób niezależny od używanego języka programowania. AIDL umożliwia komunikację między klientami HAL a usługami HAL.
Warstwa HAL z użyciem bindera
Warstwa HAL, która komunikuje się z innymi procesami za pomocą wywołań międzyprocesowych (IPC) bindera. Warstwy HAL z użyciem bindera działają w osobnym procesie niż klient, który ich używa. Warstwy HAL z użyciem bindera są rejestrowane w menedżerze usług, aby klienci mogli korzystać z ich funkcji. Warstwy HAL napisane dla Androida 8 i nowszych wersji korzystają z bindera.
Klient HAL
Proces, który uzyskuje dostęp do usługi HAL.
Interfejs HAL
Wspólny interfejs używany przez klienta i usługę HAL do komunikacji.
Usługa HAL

Kod specyficzny dla sprzętu, np. kod, który komunikuje się z aparatem konkretnego urządzenia. W partycji dostawcy musisz zaimplementować wszystkie wymagane warstwy HAL wymienione w macierzy zgodności dla wersji, na którą kierujesz reklamy. Więcej informacji o macierzach zgodności znajdziesz w artykule Macierze zgodności.

Możesz też utworzyć nowy interfejs HAL lub rozszerzyć interfejs HAL, aby obsługiwać unikalne funkcje sprzętu.

Język definiowania interfejsu sprzętowego (HIDL)

Język służący do definiowania interfejsów w sposób niezależny od używanego języka programowania. HIDL umożliwia komunikację między klientami HAL a usługami HAL.

Warstwa HAL w tym samym procesie (SP)

Ograniczony zestaw opakowanych warstw HAL. Członkostwo w tym zestawie jest kontrolowane przez Google. Warstwy HAL w tym samym procesie obejmują:

  • Stabilna warstwa HAL C mapper 5
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (dostarczana przez system Android, zawsze opakowana)
  • android.hardware.renderscript@1.0
Opakowana warstwa HAL

Usługa HAL, która została utworzona przed Androidem 8, ale została opakowana w opakowanie AIDL lub HIDL, aby działać w Androidzie 8 i nowszych wersjach.

Co dalej?