Android to oparty na Linuksie stos oprogramowania typu open source, stworzony z myślą o różnych urządzeniach i różnych formatach. Rysunek 1 przedstawia główne elementy platformy Androida.
![Stos oprogramowania na Androida](https://developer.android.google.cn/static/guide/platform/images/android-stack_2x.png?authuser=9&hl=pl)
Rysunek 1. Stos oprogramowania dla Androida.
Jądro Linuksa
Podstawą platformy Androida jest jądro Linuksa. Na przykład środowisko wykonawcze Androida (ART) korzysta z jądra systemu Linux, aby realizować podstawowe funkcje takie jak tworzenie wątków czy zarządzanie pamięcią niskopoziomowego.
Używanie jądra systemu Linux pozwala na korzystanie z kluczowych funkcji zabezpieczeń, a producentom urządzeń umożliwia opracowywanie sterowników sprzętowych dla dobrze znanego jądra.
Warstwa abstrakcji sprzętowej (HAL)
Warstwa abstrakcji sprzętu (HAL) udostępnia standardowe interfejsy, które udostępniają możliwości sprzętowe urządzeń platformie Java API wyższego poziomu. HAL składa się z wielu modułów biblioteki, z których każdy implementuje interfejs odpowiedniego typu komponentu sprzętowego, np. kamerę lub moduł Bluetooth. Gdy interfejs API interfejsu API wywołuje dostęp do sprzętu, system Android wczytuje moduł biblioteki dla tego komponentu sprzętowego.
Środowisko wykonawcze Androida
Na urządzeniach z Androidem w wersji 5.0 (poziom interfejsu API 21) lub nowszej każda aplikacja działa jako własny proces i ma własną instancję środowiska wykonawczego Androida (ART). Kod ART został opracowany tak, aby uruchamiał wiele maszyn wirtualnych na urządzeniach z małą ilością pamięci. Służy do wykonywania plików Dalvik Executable Format (DEX). To format kodu bajtowego zaprojektowany specjalnie dla Androida i zoptymalizowany pod kątem minimalnej ilości pamięci. Narzędzia kompilacji, takie jak d8
, kompilują źródła Javy do kodu bajtowego DEX, który może działać na platformie Androida.
Oto główne funkcje ART:
- Kompilacje do wykonania z wyprzedzeniem (AOT) i właśnie w czasie (JIT)
- Zoptymalizowane odśmiecanie pamięci (GC)
- W Androidzie 9 (poziom interfejsu API 28) i nowszych konwersja z plików DEX pakietu aplikacji na bardziej kompaktowy kod maszynowy
- Lepsza obsługa debugowania, w tym specjalny program profilowania próbkowania, szczegółowe wyjątki diagnostyczne i raporty o awariach oraz możliwość ustawiania punktów obserwacji w celu monitorowania konkretnych pól
Przed wersją Androida 5.0 (poziom interfejsu API 21) Dalvik był środowiskiem wykonawczym Androida. Jeśli Twoja aplikacja dobrze działa na ART, może też działać w Dalvik, ale może być inaczej.
Android zawiera też zestaw podstawowych bibliotek wykonawczych, które udostępniają większość funkcji języka programowania Java, w tym niektóre funkcje języka Java 8, których używa platforma Java API.
Natywne biblioteki C/C++
Wiele podstawowych komponentów i usług systemu Android, np. ART i HAL, jest utworzonych na podstawie kodu natywnego, który wymaga bibliotek natywnych napisanych w językach C i C++. Platforma Android udostępnia interfejsy API środowiska Java, które umożliwiają udostępnianie funkcji niektórych z tych bibliotek natywnych aplikacjom. Możesz na przykład uzyskać dostęp do OpenGL ES za pomocą interfejsu Java OpenGL API platformy Androida, aby umożliwić rysowanie i manipulowanie grafiką 2D i 3D w aplikacji.
Jeśli tworzysz aplikację, która wymaga kodu w języku C lub C++, możesz użyć pakietu Android NDK, aby uzyskać dostęp do niektórych bibliotek platform natywnych bezpośrednio z kodu natywnego.
Platforma interfejsów API Java
Cały zestaw funkcji systemu operacyjnego Android jest dostępny przez interfejsy API napisane w języku Java. Te interfejsy API stanowią elementy składowe aplikacji na Androida, upraszczając ponowne używanie podstawowych, modułowych komponentów i usług systemu, takich jak:
- Bogaty i rozszerzalny system widoków, którego można użyć do tworzenia UI aplikacji, w tym listy, siatki, pola tekstowe, przyciski, a nawet przeglądarkę internetową do umieszczenia.
- Menedżer zasobów zapewniający dostęp do zasobów niebędących kodem, takich jak zlokalizowane ciągi tekstowe, pliki graficzne i pliki układu.
- menedżer powiadomień, który umożliwia wszystkim aplikacjom wyświetlanie alertów niestandardowych na pasku stanu;
- Menedżer aktywności, który zarządza cyklem życia aplikacji i udostępnia wspólny stosunek nawigacji do tyłu.
- Dostawcy treści, którzy umożliwiają aplikacjom dostęp do danych z innych aplikacji, np. Kontakty, lub na udostępnianie własnych danych
Deweloperzy mają pełny dostęp do tych samych interfejsów API platformy, których używają aplikacje systemowe na Androida.
Aplikacje systemowe
Android zawiera zestaw podstawowych aplikacji do obsługi poczty e-mail, SMS-ów, kalendarzy, przeglądania internetu, kontaktów i innych funkcji. Aplikacje dołączone do platformy nie mają specjalnego statusu wśród aplikacji, które użytkownik chce zainstalować. Aplikacja innej firmy może więc stać się domyślną przeglądarką użytkownika, komunikatorem SMS, a nawet domyślną klawiaturą. Obowiązują pewne wyjątki, np. aplikacja Ustawienia w systemie.
Aplikacje systemowe działają zarówno jako aplikacje dla użytkowników, jak i zapewniają kluczowe funkcje, do których deweloperzy mają dostęp z poziomu ich własnych aplikacji. Jeśli na przykład chcesz, aby aplikacja wysyłała SMS-y, nie musisz tworzyć tej funkcji samodzielnie. Zamiast tego możesz wywołać dowolną zainstalowaną aplikację do obsługi SMS-ów, aby dostarczyć wiadomość do określonego przez Ciebie adresata.