Omówienie architektury

Platforma Android Open System Platform (AOSP) to publicznie dostępny i modyfikowalny kod źródłowy Androida. Każdy może pobrać i zmodyfikować AOSP dla swojego urządzenia. AOSP zapewnia kompletną i w pełni funkcjonalną implementację platformy mobilnej Android.

Istnieją dwa poziomy kompatybilności urządzeń wdrażających AOSP: zgodność z AOSP i kompatybilność z Androidem. Urządzenie kompatybilne z AOSP musi być zgodne z listą wymagań zawartych w dokumencie definicji zgodności (CDD) . Urządzenie zgodne z systemem Android musi być zgodne z listą wymagań zawartych w CDD i wymaganiach dotyczących oprogramowania dostawcy (VSR) oraz testach, takich jak te zawarte w zestawie Vendor Test Suite (VTS) i Compatibility Test Suite (CTS) . Więcej informacji na temat zgodności z systemem Android można znaleźć w programie zgodności z systemem Android .

Architektura AOSP

Stos oprogramowania dla AOSP zawiera następujące warstwy:

Architektura stosu oprogramowania AOSP.

Rysunek 1. Architektura stosu oprogramowania AOSP.

Poniżej znajduje się lista definicji terminów użytych na rysunku 1:

Aplikacja na Androida
Aplikacja stworzona wyłącznie przy użyciu API systemu Android. Sklep Google Play jest powszechnie używany do wyszukiwania i pobierania aplikacji na Androida, chociaż istnieje wiele innych alternatyw. W niektórych przypadkach producent urządzenia może chcieć wstępnie zainstalować aplikację na Androida, aby obsługiwać podstawowe funkcje urządzenia. Jeśli interesuje Cię tworzenie aplikacji na Androida, odwiedź stronę Developers.Android.com
Uprzywilejowana aplikacja
Aplikacja stworzona przy użyciu kombinacji API Androida i systemu. Te aplikacje muszą być preinstalowane na urządzeniu jako aplikacje uprzywilejowane.
Aplikacja producenta urządzenia
Aplikacja stworzona przy użyciu kombinacji Android API, systemowego API i bezpośredniego dostępu do implementacji frameworku Android. Ponieważ producent urządzenia może uzyskać bezpośredni dostęp do niestabilnych interfejsów API w ramach systemu Android, aplikacje te muszą być preinstalowane na urządzeniu i można je aktualizować tylko w przypadku aktualizacji oprogramowania systemowego urządzenia.
API systemu
Interfejs API systemu reprezentuje interfejsy API systemu Android dostępne tylko dla partnerów i producentów OEM do włączenia w dołączonych aplikacjach. Te interfejsy API są oznaczone w kodzie źródłowym jako @SystemApi.
API Androida
Interfejs API systemu Android to publicznie dostępny interfejs API dla zewnętrznych twórców aplikacji na Androida. Informacje na temat interfejsu API systemu Android można znaleźć w dokumencie Informacje o interfejsie API systemu Android .
Struktura Androida
Grupa klas Java, interfejsów i innego prekompilowanego kodu, na którym budowane są aplikacje. Części frameworku są publicznie dostępne za pośrednictwem interfejsu API systemu Android. Inne części frameworku są dostępne tylko dla producentów OEM za pośrednictwem systemowych interfejsów API. Kod platformy Android działa w procesie aplikacji.
Usługi systemowe
Usługi systemowe to modułowe, ukierunkowane komponenty, takie jak system_server , SurfaceFlinger i MediaService. Funkcjonalność udostępniana przez interfejs API platformy Android komunikuje się z usługami systemowymi w celu uzyskania dostępu do podstawowego sprzętu.
Środowisko wykonawcze Androida (ART)
Środowisko wykonawcze Java dostarczane przez AOSP. ART dokonuje tłumaczenia kodu bajtowego aplikacji na instrukcje specyficzne dla procesora, które są wykonywane przez środowisko wykonawcze urządzenia.
Warstwa abstrakcji sprzętu (HAL)
HAL to warstwa abstrakcji ze standardowym interfejsem do wdrożenia przez dostawców sprzętu. Warstwy HAL pozwalają systemowi Android zachować agnostykę w zakresie 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. Aby uzyskać więcej informacji, zobacz przegląd HAL .
Natywne demony i biblioteki

Natywne demony w tej warstwie obejmują init , healthd , logd i storaged . Te demony wchodzą w bezpośrednią interakcję z jądrem lub innymi interfejsami i nie są zależne od implementacji HAL opartej na przestrzeni użytkownika.

Biblioteki natywne w tej warstwie obejmują libc , liblog , libutils , libbinder i libselinux . Te biblioteki natywne współdziałają bezpośrednio z jądrem lub innymi interfejsami i nie zależą od implementacji HAL opartej na przestrzeni użytkownika.

Jądro

Jądro jest centralną częścią każdego systemu operacyjnego i komunikuje się ze sprzętem znajdującym się na urządzeniu. Tam, gdzie to możliwe, jądro AOSP jest podzielone na moduły niezależne od sprzętu i moduły specyficzne dla dostawcy. Opis, w tym definicje komponentów jądra AOSP można znaleźć w przeglądzie jądra .

Co dalej?

  • Jeśli jesteś nowy w AOSP i chcesz rozpocząć programowanie, zapoznaj się z sekcją Pierwsze kroki .
  • Jeśli chcesz dowiedzieć się więcej o konkretnej warstwie AOSP, kliknij nazwę sekcji w lewym panelu nawigacyjnym i rozpocznij od przeglądu tej sekcji.