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

Architektura systemu Android

Architektura systemu Android zawiera następujące komponenty:

Omówienie architektury systemu Android
Rysunek 1. Architektura systemu Android
  • Ramy aplikacji . Szkielet aplikacji jest najczęściej używany przez programistów aplikacji. Jako programista sprzętu powinieneś zdawać sobie sprawę z interfejsów API programistów, ponieważ wiele z nich mapuje bezpośrednio do bazowych interfejsów HAL i może dostarczyć przydatnych informacji na temat implementowania sterowników.
  • Binder IPC . Mechanizm Binder Inter-Process Communication (IPC) umożliwia platformie aplikacji przekraczanie granic procesów i wywoływanie kodu usług systemu Android. Umożliwia to interfejsom API platformy wysokiego poziomu współdziałanie z usługami systemu Android. Na poziomie struktury aplikacji ta komunikacja jest ukryta przed programistą i rzeczy wydają się „po prostu działać”.
  • Usługi systemowe . Usługi systemowe to modułowe, ukierunkowane komponenty, takie jak Window Manager, Search Service lub Notification Manager. Funkcjonalność udostępniana przez interfejsy API struktury aplikacji komunikuje się z usługami systemowymi w celu uzyskania dostępu do podstawowego sprzętu. Android obejmuje dwie grupy usług: systemowe (takie jak Window Manager i Notification Manager) i media (usługi związane z odtwarzaniem i nagrywaniem multimediów).
  • Warstwa abstrakcji sprzętu (HAL) . Warstwa HAL definiuje standardowy interfejs do zaimplementowania przez dostawców sprzętu, który umożliwia systemowi Android niezależność od implementacji sterowników niższego poziomu. Korzystanie z warstwy HAL umożliwia implementację funkcjonalności bez wpływania na system wyższego poziomu lub modyfikowania go. 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 opracowywania typowego sterownika urządzenia dla systemu Linux. Android używa wersji jądra Linuksa z kilkoma specjalnymi dodatkami, takimi jak Low Memory Killer (system zarządzania pamięcią, który jest bardziej agresywny w zachowywaniu pamięci), blokady PowerManager usługa systemu PowerManager ), sterownik Binder IPC i inne ważne funkcje na mobilną platformę wbudowaną. Te dodatki są głównie dla funkcjonalności systemu i nie wpływają na rozwój sterowników. Możesz użyć dowolnej wersji jądra, o ile obsługuje wymagane funkcje (takie jak sterownik binder). Zalecamy jednak używanie najnowszej wersji jądra Androida. Aby uzyskać szczegółowe informacje, zobacz Budowanie jądra .

Język definicji interfejsu HAL (HIDL)

Android 8.0 przeprojektował platformę Android OS (w projekcie znanym jako Treble ), aby ułatwić producentom, szybsze i mniej kosztowne aktualizowanie urządzeń do nowej wersji Androida. W tej nowej architekturze język definicji interfejsu HAL (HIDL, wymawiany jako „hide-l”) określa interfejs między warstwą HAL a jej użytkownikami, umożliwiając zastąpienie struktury systemu Android bez przebudowywania warstw HAL.

HIDL oddziela implementację dostawcy (specyficzne dla urządzenia oprogramowanie niższego poziomu napisane przez producentów układów scalonych) od struktury systemu operacyjnego Android za pośrednictwem nowego interfejsu dostawcy. Dostawcy lub twórcy SOC budują HAL raz i umieszczają je w partycji /vendor na urządzeniu; Framework w swojej własnej partycji można następnie zastąpić aktualizacją bezprzewodową (OTA) bez ponownej kompilacji warstw HAL.

Różnica między starszą architekturą systemu Android a obecną architekturą opartą na HIDL polega na wykorzystaniu interfejsu dostawcy:

  • W systemie Android 7.xi wcześniejszych nie istnieje 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 elementów systemu Android specyficznych dla sprzętu, dzięki czemu producenci urządzeń mogą dostarczać nowe wersje Androida po prostu aktualizując strukturę systemu operacyjnego Android - bez dodatkowej pracy ze strony producentów krzemu:

    Rysunek 3. Bieżące środowisko aktualizacji Androida

Wszystkie nowe urządzenia uruchamiane z systemem Android 8.0 lub nowszym mogą korzystać z nowej architektury. Aby zapewnić kompatybilność z wyprzedzeniem 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 starszej, jak i aktualnej architekturze Androida.

Zasoby architektoniczne

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

  • Typy HAL . Opisuje Binderized, passthrough, Same-Process (SP) i starsze HAL.
  • HIDL (ogólne) . Zawiera ogólne informacje o interfejsie między warstwą HAL a jej użytkownikami.
  • HIDL (C ++) . Zawiera szczegółowe informacje dotyczące tworzenia implementacji interfejsów HIDL w języku C ++.
  • HIDL (Java) . Zawiera szczegółowe informacje o nakładce Java dla interfejsów HIDL.
  • ConfigStore HAL . Opisuje interfejsy API do uzyskiwania dostępu do elementów konfiguracji tylko do odczytu używanych do konfigurowania struktury systemu Android.
  • Nakładki drzewa urządzeń . Zawiera szczegółowe informacje na temat używania nakładek drzewa urządzeń (DTO) w systemie Android.
  • Zestaw deweloperski dostawcy natywnego (VNDK) . Opisuje zestaw bibliotek wyłącznych dla dostawcy do implementowania warstw HAL dostawców.
  • Obiekt interfejsu dostawcy (VINTF) . Opisuje obiekty, które gromadzą istotne informacje o urządzeniu i udostępniają te informacje za pośrednictwem interfejsu API, z którego można korzystać.
  • SELinux dla Androida 8.0 . Szczegóły zmian i dostosowań SELinux.

Oprócz zasobów w tej witrynie, członkowie zespołu Treble opublikowali Treble: Szybkie aktualizacje oprogramowania, tworząc równowagę w aktywnym ekosystemie oprogramowania interesariuszy rozproszonych globalnie . Artykuł jest bezpłatny dla członków ACM, a osoby niebędące członkami mogą zakupić lub przeczytać streszczenie.