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:
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
istoraged
. 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
ilibselinux
. 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.