Architektura Androida

Architektura systemu Android zawiera następujące składniki:

Przegląd architektury systemu Android
Rysunek 1. Architektura systemu Android
  • Ramy aplikacji . Framework aplikacji jest najczęściej używany przez twórców aplikacji. Jako deweloper sprzętu powinieneś wiedzieć, że interfejsy API deweloperów są mapowane bezpośrednio na podstawowe interfejsy warstwy HAL i mogą dostarczyć przydatnych informacji na temat implementacji sterowników.
  • Spoiwa IPC . Mechanizm Binder Inter-Process Communication (IPC) umożliwia strukturze aplikacji przekraczanie granic procesów i wywoływanie kodu usług systemu Android. Dzięki temu interfejsy API struktury wysokiego poziomu mogą współdziałać z usługami systemu Android. Na poziomie struktury aplikacji ta komunikacja jest ukryta przed deweloperem i wydaje się, że wszystko „po prostu działa”.
  • Usługi systemowe . Usługi systemowe to modułowe, ukierunkowane komponenty, takie jak Menedżer okien, Usługa wyszukiwania lub Menedżer powiadomień. Funkcjonalność udostępniana przez interfejsy API struktury aplikacji komunikuje się z usługami systemowymi w celu uzyskania dostępu do podstawowego sprzętu. Android zawiera dwie grupy usług: systemowe (takie jak Menedżer okien i Menedżer powiadomień) oraz media (usługi związane z odtwarzaniem i nagrywaniem nośników).
  • Warstwa abstrakcji sprzętu (HAL) . HAL definiuje standardowy interfejs dla dostawców sprzętu do zaimplementowania, co umożliwia systemowi Android niezależność od implementacji sterowników niższego poziomu. Korzystanie z warstwy HAL umożliwia wdrożenie funkcjonalności bez wpływu lub modyfikacji systemu wyższego poziomu. Implementacje HAL są pakowane w moduły i ładowane przez system Android w odpowiednim czasie. Aby uzyskać szczegółowe informacje, zobacz Warstwa abstrakcji sprzętu (HAL) .
  • Jądro Linuksa . Tworzenie sterowników urządzeń jest podobne do tworzenia typowego sterownika urządzenia dla systemu Linux. Android używa wersji jądra Linux z kilkoma specjalnymi dodatkami, takimi jak Low Memory Killer (system zarządzania pamięcią, który bardziej agresywnie zachowuje pamięć), blokady budzenia (usługa systemowa PowerManager ), sterownik Binder IPC i inne ważne funkcje dla mobilnej platformy wbudowanej. Te dodatki dotyczą głównie funkcjonalności systemu i nie wpływają na rozwój sterowników. Możesz użyć dowolnej wersji jądra, o ile obsługuje ona wymagane funkcje (takie jak sterownik bindera). Zalecamy jednak korzystanie z najnowszej wersji jądra Androida. Aby uzyskać szczegółowe informacje, zobacz Tworzenie jąder .

Język definicji interfejsu HAL (AIDL/HIDL)

W systemie Android 8.0 zmieniono architekturę systemu operacyjnego Android (w projekcie znanym jako Treble ), aby ułatwić, przyspieszyć i zmniejszyć koszty aktualizacji urządzeń do nowej wersji systemu Android przez producentów. W tej nowej architekturze język definicji interfejsu HAL (HIDL, wymawiane „ukryj-l”) określa interfejs między warstwą HAL a jej użytkownikami, umożliwiając zastąpienie struktury Androida bez przebudowy warstw HAL. W Androidzie 10 funkcje HIDL zostały włączone do AIDL. Od tego czasu HIDL jest przestarzały i jest używany tylko przez podsystemy, które nie zostały jeszcze przekonwertowane na AIDL.

Treble oddziela implementację dostawcy (specyficzne dla urządzenia oprogramowanie niższego poziomu napisane przez producentów krzemu) od frameworka Android OS za pomocą nowego interfejsu dostawcy. Dostawcy lub twórcy SOC tworzą warstwy HAL raz i umieszczają je na partycji /vendor na urządzeniu; platformę we własnej partycji można następnie zastąpić aktualizacją bezprzewodową (OTA) bez ponownej kompilacji warstw HAL.

Różnica między starszą architekturą Androida a obecną architekturą opartą na IDL polega na wykorzystaniu interfejsu dostawcy:

  • W systemie Android 7.x i wcześniejszych nie istnieje żaden formalny interfejs dostawcy, więc producenci urządzeń muszą aktualizować duże fragmenty kodu Androida, aby przenieść urządzenie do nowszej wersji Androida:

    Rysunek 2. Starsze środowisko aktualizacji Androida
  • W systemie Android 8.0 i nowszych nowy, stabilny interfejs dostawcy zapewnia dostęp do specyficznych dla sprzętu części systemu Android, dzięki czemu producenci urządzeń mogą dostarczać nowe wersje systemu Android po prostu aktualizując strukturę systemu operacyjnego Android — bez dodatkowych prac wymaganych od producentów układów:

    Rysunek 3. Aktualne środowisko aktualizacji Androida

Wszystkie nowe urządzenia uruchamiane z systemem Android 8.0 lub nowszym mogą korzystać z nowej architektury. Aby zapewnić kompatybilność w przód implementacji dostawców, interfejs dostawcy jest sprawdzany przez Vendor Test Suite (VTS) , który jest analogiczny do Compatibility Test Suite (CTS) . Za pomocą VTS można zautomatyzować testowanie jądra HAL i systemu operacyjnego zarówno w starszych, jak i obecnych architekturach Androida.

Zasoby architektoniczne

Aby uzyskać szczegółowe informacje na temat architektury systemu Android, zobacz następujące sekcje:

  • Typy HAL . Opisuje warstwy HAL zbinderyzowane, przekazywane, tego samego procesu (SP) i starsze.
  • AIDL . Dokumentacja dotycząca AIDL, niezależnie od tego, czy jest używany ogólnie, czy jako interfejs HAL.
  • HIDL (ogólne) . Zawiera ogólne informacje o interfejsie między warstwą HAL a jej użytkownikami.
  • HIDL (C++) . Zawiera szczegóły dotyczące tworzenia implementacji C++ interfejsów HIDL.
  • HIDL (Java) . Zawiera szczegółowe informacje o interfejsie Java dla interfejsów HIDL.
  • ConfigStore HAL . Opisuje interfejsy API umożliwiające dostęp do elementów konfiguracji tylko do odczytu używanych do konfigurowania platformy Android.
  • Nakładki drzewa urządzeń . Zawiera szczegółowe informacje na temat korzystania z nakładek drzewa urządzeń (DTO) w systemie Android.
  • Natywny zestaw rozwojowy dostawcy (VNDK) . Opisuje zestaw bibliotek dostępnych tylko dla dostawców, służących do wdrażania warstw HAL dostawców.
  • Obiekt interfejsu dostawcy (VINTF) . Opisuje obiekty, które agregują istotne informacje o urządzeniu i udostępniają te informacje za pośrednictwem interfejsu API z możliwością zapytań.
  • SELinux dla Androida 8.0 . Szczegóły zmian i dostosowań SELinux.

Oprócz zasobów na tej stronie, członkowie zespołu Treble opublikowali Treble: Fast Software Updates by creation an Equilibrium in a Active Software Ecosystem of Globally Distributed Stakeholders . Artykuł jest bezpłatny dla członków ACM, a osoby niebędące członkami mogą zakupić lub przeczytać streszczenie.