Architektura Androida

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

Przegląd architektury systemu Android
Architektura systemu figura 1. 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.
  • Binder 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ług systemowych. 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 Window Manager i Kierownik zgłoszenia) i media (usługi związane z grania i nagrywania nośników).
  • Warstwa abstrakcji metalowe (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. Szczegółowe informacje można znaleźć Hardware Abstraction Layer (HAL) .
  • Jądro Linux. Tworzenie sterowników urządzeń jest podobne do tworzenia typowego sterownika urządzenia dla systemu Linux. Zastosowania android wersja jądra Linux z kilkoma specjalnymi dodatkami, takimi jak mało pamięci Zabójcy (system zarządzania pamięcią, który jest bardziej agresywny w pamięci zachowanie), zamki budzenia (a PowerManager usług System), kierowcy Binder IPC oraz innych cech ważnych 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. Szczegółowe informacje można znaleźć kernela .

Język definicji interfejsu HAL (AIDL/HIDL)

Android 8.0 ponownego architected ramy Android OS (w projekcie zwanym Treble), aby ułatwić, szybsze i mniej kosztowne dla producentów urządzeń do aktualizacji do nowej wersji Androida. 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 platformy Android 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. Sprzedawcy lub ekspresy SOC zbudować warstwy HAL raz i umieścić je w /vendor partycji na urządzeniu; ramy w swoim partycji może być następnie zastąpione przez over-the-air (OTA) aktualizację bez ponownej kompilacji HALS.

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:

    Środowisko zmiana figura 2 Zapis Android
  • 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 platformę Android OS — bez dodatkowej pracy wymaganej od producentów układów:

    Aktualizacja środowiska Rysunek 3. Obecny Android

Wszystkie nowe urządzenia uruchamiane z systemem Android 8.0 lub nowszym mogą korzystać z nowej architektury. Aby zapewnić zgodność z przodu implementacjach dostawcy, interfejs sprzedawca jest zatwierdzone przez Vendor Test Suite (VTS) , która jest analogiczna 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:

  • Rodzaje 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 (General) . 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.
  • Urządzenie drzewa nakładek . Zawiera szczegółowe informacje na temat korzystania z nakładek drzewa urządzeń (DTO) w systemie Android.
  • Sprzedawca Native Development Kit (VNDK) . Opisuje zestaw bibliotek dostępnych tylko dla dostawców, służących do wdrażania warstw HAL dostawców.
  • Sprzedawca Interfejs obiektu (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 opublikowanego Treble: Fast Software Updates poprzez stworzenie równowagi w Active Software ekosystemu ogólnoświatowej dystrybucji Interesariusze . Artykuł jest bezpłatny dla członków ACM, a osoby niebędące członkami mogą zakupić lub przeczytać streszczenie.