Android Architecture: Warstwy aplikacji, Framework, Komponent
Android pierwsze wydanie systemu operacyjnego miało miejsce w 2008 roku. Już na początku zespół stojący za systemem operacyjnym budował go na barkach gigantów. Oprócz interfejsu użytkownika, który Android OS występuje na poziomie powierzchni, składa się z wielu warstw. Warstwy te obejmują niestandardowy kod i technologie open source, które są stale rozwijane od dziesięcioleci.
Android został opracowany dzięki ogromnym wspólnym wysiłkom i inwestycjom wielu firm. Główną firmą stojącą za rozwojem Androida jest Google. Inne firmy to producenci urządzeń, tacy jak Samsung, LG; producenci procesorów, tacy jak Intel i ARM, ale żeby wymienić tylko kilka.
Gdy rozmawiamy o sprawiedliwym dostępie do Android architektura, mamy na myśli to, jak Android system został zaprojektowany, podzielony na warstwy i zbudowany tak, aby działał jako system. Zbudowanie tak złożonego systemu wymaga starannej strukturyzacji, aby zapewnić, że wszystkie komponenty będą działać spójnie. Jego architektura zapewnia, że wiele komponentów będzie działać jako całość bez awarii.
Warstwy
Poniżej przedstawiono warstwy, które składają się na Android architektura oznaczona na schemacie:
- Zastosowanie
- Ramy aplikacji
- Android Biblioteki wykonawcze i podstawowe
- Linux Kernel
Opracowanie systemu operacyjnego dla urządzeń mobilnych wiąże się z szeregiem wyzwań. Korzystanie z tej warstwowej architektury zapewnia, że różne problemy są rozbijane i rozwiązywane na różnych poziomach.
Architektura warstwowa pomaga oddzielić obawy i zapewnia, że programiści oprogramowania na Androida nie muszą radzić sobie z problemami niskiego poziomu na każdym kroku. Zamiast tego mogą skupić się na dostarczaniu wartości biznesowej związanej z warstwą, nad którą pracują.
Programiści pracują nad tym, aby aplikacje nie musiały martwić się o implementację struktury aplikacji. Ta praca pozostaje twórcom systemu pracującym nad frameworkiem aplikacji.
Deweloperzy Application Framework pracują nad doświadczeniem programisty i nie muszą się martwić o sterowniki niskiego poziomu. Inżynierowie systemów niskiego poziomu mogą skupić się całkowicie na komponentach niskiego poziomu, takich jak sterowniki Bluetooth lub audio i tym podobne.
AndroidWarstwowa struktura umożliwia stosowanie aktualizacji z poprawkami błędów lub ulepszeniami osobno dla każdej warstwy. Dzięki temu zmiany między warstwami nie kolidują ze sobą. Dzięki temu osoby pracujące na różnych poziomach systemu operacyjnego mogą wzajemnie utrudniać sobie pracę podczas tworzenia nowych aktualizacji i wydań.
Android Zastosowanie
Jest to warstwa, z którą użytkownicy końcowi wchodzą w interakcję. To na tej warstwie twórcy aplikacji publikują swoje aplikacje do uruchomienia.
Android, domyślnie, zawiera zestaw aplikacji, które umożliwiają od samego początku korzystanie z urządzeń z systemem Android.
- strona główna: Strona główna włączona Android składa się z ikon uruchamiania często używanych aplikacji, do których użytkownik końcowy może chcieć mieć szybki dostęp. Możesz uruchomić aplikacje, klikając elementy uruchamiające te aplikacje. Na samej górze ekranu znajdują się widżety pokazujące sieć, poziom naładowania baterii, datę i godzinę.
- Łączność: Androiddomyślnie umożliwia przechowywanie i pobieranie kontaktów. Informacje kontaktowe są udostępniane innym aplikacjom w celu zwiększenia funkcjonalności.
- Wiadomości: Android zapewnia możliwość wysyłania i odbierania wiadomości SMS.
- E-mail: Android jest wyposażony w natywne wsparcie dla usług poczty e-mail. Konfigurowanie Android urządzenie wymaga konta Gmail. Konfiguracja Gmaila aktywuje inne zależne od poczty e-mail komponenty na Android urządzeń. Niektóre funkcje zależne od poczty e-mail obejmują mechanizmy bezpieczeństwa i odzyskiwania. Inną funkcją zależną od poczty e-mail jest dostęp do Play Store, rynku Android aplikacji.
- Przeglądarka: Android jest dostarczany z domyślną przeglądarką.
- Szuflada powiadomień: Przesunięcie palcem w dół ekranu odsłania szufladę powiadomień. Zawiera ona zdarzenia aplikacji, o których użytkownik powinien wiedzieć. Nad powiadomieniem znajduje się zestaw skrótów do niektórych powszechnie używanych ustawień urządzenia, które użytkownicy mogą przełączać. Ustawienia te obejmują przełączniki włączania i wyłączania różnych komponentów sprzętowych, takich jak Bluetooth i Wi-Fi. Długie naciśnięcie tych zdarzeń umożliwia nam przejście do ich strony konfiguracji.
Ta warstwa jest również nazywana warstwą użytkownika w przeciwieństwie do warstw poniżej, które są głównie dostrojone do rozwoju aplikacji. Deweloperzy aplikacji tworzą i dostosowują doświadczenia dla swoich aplikacji na tej warstwie. Warstwy poniżej warstwy aplikacji nie są dostosowywane przez deweloperów aplikacji. Są uważane za część warstwy systemowej. Te warstwy są dostosowywane przez producentów urządzeń, zespoły Google Android lub osoby trzecie, które chcą korzystać z Android kod źródłowy swojego produktu lub badań.
Ramy aplikacji
Android System operacyjny udostępnia podstawowe biblioteki i funkcje oprogramowania Android urządzenie, które korzysta z Java API. Jest to tzw Android struktura. Ramy udostępniają bezpieczne i jednolite środki do wykorzystania Android zasoby urządzenia.
1) Menedżer aktywności
Aplikacje korzystają z Android komponent działania służący do prezentowania punktu wejścia do aplikacji. Android Działania to komponenty zawierające interfejs użytkownika, z którym użytkownicy aplikacji wchodzą w interakcję. Gdy użytkownicy końcowi wchodzą w interakcję z Android urządzenia, uruchamiają się, zatrzymują i przeskakują w przód i w tył w wielu aplikacjach. Każde zdarzenie nawigacyjne powoduje aktywację i dezaktywację wielu działań w odpowiednich aplikacjach.
Android ActivityManager odpowiada za przewidywalne i spójne zachowanie podczas przejść aplikacji. Menedżer aktywności zapewnia twórcom aplikacji możliwość reakcji ich aplikacji, gdy Android System operacyjny wykonuje globalne działania. Aplikacje mogą nasłuchiwać zdarzeń, takich jak obrót urządzenia, zniszczenie aplikacji z powodu niedoboru pamięci, przesunięcie aplikacji poza fokus itd.
Oto kilka przykładów reakcji aplikacji na te przejścia: wstrzymywanie aktywności w grze lub odtwarzanie muzyki podczas rozmowy telefonicznej.
2) Menedżer okien
Android może określić informacje na ekranie, aby ustalić wymagania potrzebne do utworzenia okien dla aplikacji. Windows to miejsca, w których możemy wyświetlić interfejs użytkownika naszej aplikacji. Android używa menedżera okien do dostarczania tych informacji aplikacjom i systemowi podczas ich działania, aby mogły dostosować się do trybu, w którym działa urządzenie.
Menedżer okien pomaga w dostarczaniu dostosowanej aplikacji. Aplikacje mogą wypełniać cały ekran, zapewniając wciągające wrażenia, lub udostępniać ekran innym aplikacjom. Android umożliwia to poprzez umożliwienie każdej aplikacji korzystania z wielu okien.
3) Menedżer lokalizacji
Większość Android urządzenia są wyposażone w urządzenia GPS, które mogą uzyskać lokalizację użytkownika na podstawie informacji satelitarnych, które mogą sięgać aż do dokładności licznika. Programiści mogą pytać użytkowników o pozwolenie na lokalizację, dostarczać lokalizację i świadome doświadczenia.
Android może również wykorzystywać technologie bezprzewodowe w celu dalszego wzbogacenia szczegółów lokalizacji i zwiększenia zasięgu, gdy urządzenia znajdują się w zamkniętych przestrzeniach. Android udostępnia te funkcje w ramach Menedżera lokalizacji.
4) Menedżer ds. telefonii
Większość Android Urządzenia pełnią główną rolę w telefonii. Android wykorzystuje TelephoneManager do łączenia komponentów sprzętu i oprogramowania w celu zapewnienia funkcji telefonicznych. Komponenty sprzętowe obejmują części zewnętrzne, takie jak karta SIM, oraz części urządzenia, takie jak mikrofon, kamera i głośniki. Składniki oprogramowania obejmują komponenty natywne, takie jak klawiatura wybierania numeru, książka telefoniczna i profile dzwonków. Korzystając z TelephoneManagera, programista może rozszerzyć lub udoskonalić domyślną funkcjonalność połączeń.
5) Menedżer zasobów
Android aplikacja zwykle zawiera coś więcej niż tylko kod. Mają także inne zasoby, takie jak ikony, pliki audio i wideo, animacje, pliki tekstowe i tym podobne. Android pomaga w zapewnieniu wydajnego i responsywnego dostępu do tych zasobów. Zapewnia również dostarczenie odpowiednich zasobów użytkownikom końcowym. Na przykład podczas wypełniania pól w aplikacjach używane są pliki tekstowe w odpowiednim języku.
6) Zobacz system
Android zapewnia także możliwość łatwego tworzenia wspólnych komponentów wizualnych potrzebnych do interakcji z aplikacją. Komponenty te obejmują widżety, takie jak przyciski, uchwyty obrazów, takie jak ImageView, komponenty do wyświetlania listy elementów, takie jak ListView i wiele innych. Komponenty są gotowe, ale można je również dostosować do potrzeb twórców aplikacji i marki.
7) Menedżer powiadomień
Za informowanie odpowiada Menedżer Powiadomień Android użytkownicy zdarzeń aplikacji. Czyni to poprzez wysyłanie użytkownikom sygnałów wizualnych, dźwiękowych lub wibracyjnych lub ich kombinacji w przypadku wystąpienia zdarzenia. Zdarzenia te mają wyzwalacze zewnętrzne i wewnętrzne. Przykładami wewnętrznych wyzwalaczy są zdarzenia dotyczące stanu niskiego poziomu naładowania baterii, które powodują wyświetlenie powiadomienia o niskim poziomie naładowania baterii. Innym przykładem są zdarzenia określone przez użytkownika, takie jak alarm. Niektóre przykłady zewnętrznych wyzwalaczy obejmują nowe wiadomości lub wykrycie nowych sieci Wi-Fi.
Android zapewnia programistom i użytkownikom końcowym możliwość dostrojenia systemu powiadomień. Może to pomóc zagwarantować, że będą mogli wysyłać i odbierać powiadomienia w sposób, który najlepiej odpowiada im i ich obecnemu środowisku.
8) Menedżer pakietów
Android zapewnia także dostęp do informacji o zainstalowanych aplikacjach. Android śledzi informacje o aplikacji, takie jak zdarzenia instalacji i dezinstalacji, uprawnienia żądane przez aplikację oraz wykorzystanie zasobów, takie jak zużycie pamięci.
Informacje te mogą umożliwić programistom aktywowanie lub dezaktywowanie funkcji w ich aplikacjach w zależności od nowych funkcji prezentowanych przez aplikacje towarzyszące.
9) Dostawca treści
Android posiada ustandaryzowany sposób udostępniania danych pomiędzy aplikacjami na urządzeniu korzystającym z dostawcy treści. Programiści mogą używać dostawcy treści do udostępniania danych innym aplikacjom. Mogą na przykład umożliwić przeszukiwanie danych aplikacji w zewnętrznych aplikacjach wyszukujących. Android sam udostępnia dane, takie jak dane kalendarza, dane kontaktowe i tym podobne, korzystając z tego samego systemu.
Android Biblioteki wykonawcze i podstawowe/natywne
1) Android Czas pracy
Android obecnie używa Android Runtime (ART) do wykonywania kodu aplikacji. ART jest poprzedzone przez Dalvik Runtime, który kompiluje kod programisty do plików wykonywalnych Dalvik (pliki Dex). Te środowiska wykonawcze są zoptymalizowane dla platformy Android, biorąc pod uwagę ograniczenia procesora i pamięci na urządzeniach mobilnych.
Środowisko wykonawcze tłumaczy kod napisany przez programistów na kod maszynowy, który wykonuje obliczenia i wykorzystuje komponenty platformy Android w celu dostarczenia funkcjonalności. Android hostuje wiele aplikacji i komponentów systemu, z których każdy działa w swoich procesach.
Biblioteki podstawowe
W tej części omówimy niektóre podstawowe biblioteki obecne w Android system operacyjny.
2) MediaFramework
Android obsługuje także natywnie popularne kodeki multimedialne, dzięki czemu aplikacje utworzone na Android platforma umożliwiająca korzystanie/odtwarzanie komponentów multimedialnych od razu po wyjęciu z pudełka.
3) SQLite
Android ma również SQLite baza danych która umożliwia aplikacjom korzystanie z bardzo szybkiej, natywnej funkcjonalności bazy danych bez konieczności korzystania z bibliotek stron trzecich.
4) Typ dowolny
Android posiada preinstalowany szybki i elastyczny silnik czcionek. Dzięki temu twórcy aplikacji mogą stylizować komponenty swojej aplikacji i zapewniać bogate środowisko, które odzwierciedla intencje programisty.
5) OpenGL
Android jest również wyposażony w system graficzny OpenGL. Pomaga w tym biblioteka C Android wykorzystywać komponenty sprzętowe do renderowania grafiki 2D i 3D w czasie rzeczywistym.
6) SSL
Android posiada również wbudowaną warstwę zabezpieczeń, która umożliwia bezpieczną komunikację pomiędzy aplikacjami Android oraz inne urządzenia takie jak serwery, inne urządzenia mobilne, routery 6.
7) SGL
Android zawiera bibliotekę graficzną zaimplementowaną w kodzie niskiego poziomu, która efektywnie renderuje grafikę dla platformy Android. Działa z komponentami wyższego poziomu Android Android potok graficzny.
8) Lib
Trzon Android zawiera biblioteki napisane w C i C++, które są językami niskiego poziomu przeznaczonymi do użytku wbudowanego i pomagającymi w maksymalizacji wydajności. Libc zapewnia środki do udostępniania tym bibliotekom niskopoziomowych funkcjonalności systemowych, takich jak wątki, gniazda, IO i tym podobne.
9) Pakiet internetowy
Jest to silnik przeglądarki typu open source, używany jako podstawa do tworzenia przeglądarek. Domyślny Android przeglądarka przed wersją 4.4 KitKat używa jej do renderowania stron internetowych. Umożliwia twórcom aplikacji renderowanie komponentów sieciowych w systemie widoków przy użyciu WebView. Dzięki temu aplikacje mogą integrować komponenty sieciowe ze swoją funkcjonalnością.
10) Menedżer powierzchni
Menedżer powierzchni jest odpowiedzialny za zapewnienie płynnego renderowania ekranów aplikacji. Robi to poprzez komponowanie grafiki 2D i 3D do renderowania. Umożliwia to również poprzez buforowanie poza ekranem.
Linux Kernel
Główny komponent Android System to jądro Linuxa. Jest to podstawowy element, który umożliwia wszystkie Androidfunkcjonalność.
Jądro Linuksa to przetestowane w boju oprogramowanie, które zostało użyte podczas programowania system operacyjny dla urządzeń szerokiej gamy, od superkomputerów po małe gadżety. Ma ograniczone możliwości przetwarzania, takie jak małe gadżety sieciowe dla Internetu rzeczy (IoT).
Jądro Linuksa można dostosować, aby spełniało specyfikacje urządzenia, aby umożliwić producentom jego wykonanie Android urządzenia o różnych możliwościach, aby dopasować je do doświadczenia użytkownika.
W odniesieniu do AndroidKernel odpowiada za wiele podstawowych funkcjonalności, w tym między innymi:
- Sterowniki urządzeń
- Zarządzanie pamięcią
- Zarządzanie procesem
Rozwińmy niektóre funkcjonalności:
Sterowniki urządzeń
Jądro Linuxa zawiera sterowniki potrzebne do umożliwienia systemowi operacyjnemu pracy z różnymi komponentami sprzętowymi. Sterowniki te zapewniają standardowy interfejs, z którym mogą współpracować komponenty sprzętowe pochodzące od różnych producentów.
Umożliwia to producentom urządzeń pozyskiwanie różnych komponentów, takich jak komponenty Bluetooth, komponenty Wi-Fi, komponenty aparatu. Pod warunkiem, że producenci odpowiadają Android standardowych specyfikacji, integracja przebiega bezproblemowo.
1) Sterownik USB
Linux zapewnia również Android ze środkami do łączenia się z urządzeniami USB. Nowoczesne urządzenia są wyposażone w różne porty USB, w tym USB 2.0 i nowe wersje USB, w tym USB-C. Sterowniki te umożliwiają wykorzystanie portu USB do ładowania, przesyłania bieżących danych, takich jak logi z Android urządzeń i interakcji z systemem Android System plików.
2) Sterownik Bluetooth
Jądro systemu Linux zapewnia obsługę komunikacji z komponentami sprzętowymi Bluetooth. Umożliwia odczyt i zapis danych otrzymanych z obsługiwanych częstotliwości radiowych Bluetooth. Zapewnia również zestaw udogodnień dla Android skonfigurować Bluetooth.
3) Sterownik Wi-Fi
Jądro systemu Linux zapewnia sterowniki umożliwiające integrację komponentów sprzętowych sieci Wi-Fi. Umożliwiają to komponenty WiFi wbudowane w urządzenia mobilne Android urządzenia do łączenia się z sieciami Wi-Fi. Sterownik umożliwia komponentom Wi-Fi nadawanie sieci Wi-Fi i tworzenie hotspotów.
4) Sterownik ekranu
Android umożliwia interfejs z komponentami wyświetlacza. W przypadku większości urządzeń komponentem interfejsu jest ekran dotykowy LCD. Umożliwia on obsługę konfiguracji i rysowania pikseli.
5) Sterownik audio
Android urządzenia zwykle są dostarczane z komponentami sprzętowymi do wejścia i wyjścia audio. Sterowniki audio w jądrze umożliwiają Android system do wykorzystania dźwięku odbieranego z tych komponentów, a także do generowania sygnału wyjściowego audio.
6) Menedżer zasilania
Większość Android urządzenia są używane po odłączeniu od gniazdek elektrycznych. Dlatego też przez większą część czasu użytkowania są one zależne od baterii. Linux Kernel jest wyposażony w system zarządzania energią, który można konfigurować tak, aby odpowiadał potrzebom korzystających z niego urządzeń.
Android System operacyjny korzysta z menedżera zasilania, aby włączyć inne komponenty urządzenia do obsługi zasilania. Czyni to poprzez nadawanie różnych stanów związanych z mocą. Te stany to Gotowość, Uśpienie i Niski poziom baterii. NA Androidmenedżer zasilania został skonfigurowany tak, aby domyślnie przechodził w tryb uśpienia, aby zapewnić maksymalną żywotność baterii.
Power Manager umożliwia aplikacjom reagowanie na różne tryby zasilania. Aplikacje mogą również zmieniać swoje zachowanie, aby dopasować je do aktualnego stanu zasilania urządzenia.
Aplikacja może również zażądać zmiany domyślnych zasad zasilania. Aplikacje mogą osiągnąć pożądaną funkcjonalność, taką jak utrzymywanie aktywności komponentów sprzętowych. Przykładem może być utrzymywanie aktywnego ekranu podczas czytania książki, aby użytkownik nie przeszkadzał. Innym przykładem jest pozostawienie włączonych komponentów audio podczas słuchania muzyki w tle.
7) Pamięć Flash
Większość Android Urządzenia korzystają z pamięci flash jako środka przechowywania. Pamięć Flash jest szybka i zajmuje mniej miejsca, dzięki czemu idealnie nadaje się do małych urządzeń. Jądro Linuksa zapewnia środki do Android urządzenia do odczytu i zapisu w pamięci flash. Umożliwia partycjonowanie pamięci w taki sposób, aby system operacyjny i inne aplikacje mogły łatwo i efektywnie dzielić zasoby pamięci.
8) Spoiwo
Android hostuje wiele aplikacji i komponentów systemu, z których każdy działa w swoich procesach. W większości przypadków procesy te powinny być odizolowane od siebie, aby zapobiec zakłóceniom i uszkodzeniu danych. Są jednak przypadki, w których chcielibyśmy przekazać dane z jednego procesu do drugiego.
Jądro Linuksa umożliwia udostępnianie danych poprzez udostępnienie sterowników segregatorów. Sterowniki Bindera umożliwiają komunikację między procesami, IPC. Korzystając z procesów IPC, można odkryć inne procesy i dzielić się informacjami.
Zarządzanie pamięcią
Kolejnym obowiązkiem jądra Linuksa jest zarządzanie pamięcią. Gdy działają różne aplikacje, jądro dba o to, aby używana przez nie pamięć nie kolidowała i nie nadpisywała się nawzajem.
Pomaga także zapewnić, że wszystkie uruchomione aplikacje otrzymają odpowiednią ilość pamięci do działania, dzięki czemu żadna pojedyncza aplikacja nie zajmie zbyt dużo miejsca.
Zarządzanie procesem
Każda aplikacja w Android działa w procesie. Jądro odpowiada także za zarządzanie procesami. Oznacza to, że jest odpowiedzialny za tworzenie, wstrzymywanie, zatrzymywanie, zamykanie lub kończenie procesów.
Jądro umożliwia różne funkcjonalności, takie jak jednoczesne uruchamianie wielu procesów, komunikacja między procesami, uruchamianie procesów w tle i tak dalej.
Ponieważ każdy proces wymaga własnej przestrzeni pamięci do prawidłowego działania, jądro zapewnia, że przestrzenie pamięci przydzielone dla każdego procesu są chronione przed innymi procesami. Zapewnia również, że zasoby takie jak RAM zasoby przydzielone procesom są zwalniane po zamknięciu procesów.
Jądro Linuksa jest również odpowiedzialne za dystrybucję pracy pomiędzy procesorami obecnymi w urządzeniu. Umożliwia to maksymalizację wydajności urządzeń z wieloma rdzeniami, ponieważ różne aplikacje będą uruchamiać procesy na innym rdzeniu.
Jądro Linuksa wykonuje pod maską więcej zadań, w tym egzekwowanie zabezpieczeń.
Podsumowanie
- Android architektura jest zorganizowana warstwowo.
- Każda warstwa rozwiązuje unikalny zestaw problemów.
- Użytkownicy końcowi wchodzą w interakcję z aplikacjami w warstwie aplikacji
- Twórcy aplikacji opracowują aplikacje do użytku w warstwie aplikacji. Robią to za pomocą narzędzi i abstrakcji dostarczonych przez Application Framework.
- Android Warstwa frameworku upraszcza dostęp do komponentów niskiego poziomu, tworząc API w oparciu o biblioteki natywne.
- Android Biblioteki wykonawcze i podstawowe korzystają z języków niskiego poziomu wraz z optymalizacjami dla urządzeń mobilnych. Dzięki temu kod napisany przez twórców aplikacji działa płynnie pomimo Android ograniczenia urządzenia.
- W dolnej części Android stos oprogramowania to jądro Linuksa. Łączy się z komponentami sprzętowymi powszechnymi w Android urządzeń.