Android Architekstura: slojevi aplikacije, okvir, komponenta
Android početno izdanje operativnog sustava bilo je 2008. godine. Čak i na početku, tim koji stoji iza operativnog sustava izgradio ga je na vrhu pleća divova. Osim korisničkog sučelja koje Android OS je prisutan na površinskoj razini, sastoji se od više slojeva. Ovi slojevi uključuju prilagođeni kod i tehnologije otvorenog koda koje se kontinuirano razvijaju desetljećima.
Android je razvijen kroz velike zajedničke napore i ulaganja mnogih tvrtki. Glavna tvrtka koja stoji iza razvoja androida je Google. Druge tvrtke uključuju proizvođače uređaja kao što su Samsung, LG; proizvođači procesora kao što su Intel i ARM, ali da spomenemo samo neke.
Kada pričamo Android arhitekture, mislimo na to kako Android sustav je dizajniran, segmentiran u slojeve i izgrađen da radi kao sustav. Izgradnja tako složenog sustava zahtijeva pažljivo strukturiranje kako bi se osiguralo kohezivno djelovanje svih komponenti. Njegova arhitektura osigurava da mnoge komponente funkcioniraju kao cjelina bez rušenja.
Slojevi
Slijede slojevi koji čine Android arhitektura kao što je označeno na dijagramu:
- primjena
- Okvir za prijavu
- Android Runtime i osnovne biblioteke
- Linux kernela
Razvoj operativnog sustava za mobilne uređaje dolazi sa nizom izazova. Korištenje ove slojevite arhitekture osigurava da se različiti problemi raščlane i riješe na različitim razinama.
Slojevita arhitektura pomaže razdvojiti brige i osigurava da se programeri android softvera ne moraju suočavati s problemima niske razine na svakom koraku. Umjesto toga mogu se usredotočiti na isporuku poslovne vrijednosti u odnosu na sloj na kojem rade.
Programeri rade na tome da aplikacije ne moraju brinuti o implementaciji aplikacijskog okvira. Taj je posao ostavljen programerima sustava koji rade na okviru aplikacije.
Programeri Application Frameworka rade na iskustvu programera i ne moraju brinuti o upravljačkim programima niske razine. Inženjeri sustava niske razine mogu se u potpunosti usredotočiti na komponente niske razine kao što su Bluetooth ili Audio driveri i slično.
AndroidSlojevita struktura omogućuje primjenu ažuriranja s ispravcima pogrešaka ili poboljšanja na svaki sloj zasebno. To osigurava da promjene među slojevima ne ometaju jedna drugu. Ovo omogućuje ljudima koji rade na različitim razinama OS-a da rade uz ometanje jedni drugih kako se rade nova ažuriranja i izdanja.
Android primjena

Ovo je sloj s kojim krajnji korisnici komuniciraju. Upravo na ovom sloju programeri aplikacija objavljuju svoje aplikacije za pokretanje.
Android, prema zadanim postavkama, dolazi sa skupom aplikacija koje čine Android uređaje upotrebljivim od offseta.
- Početna: Početna stranica na Android sastoji se od ikona pokretača za često korištene aplikacije kojima krajnji korisnik želi brz pristup. Aplikacije možete pokrenuti klikom na pokretače tih aplikacija. Na samom vrhu zaslona imate widgete koji prikazuju mrežu, razinu baterije, datum i vrijeme.
- Kontakti: Android, prema zadanim postavkama, pruža način za pohranjivanje i dohvaćanje kontakata. Podaci o kontaktu dijele se u drugim aplikacijama radi poboljšanja funkcionalnosti.
- Poruke: Android pruža mogućnost slanja i primanja SMS poruka.
- E-mail: Android dolazi s izvornom podrškom za usluge e-pošte. Postavljanje Android uređaj zahtijeva Gmail račun. Postavljanje Gmaila aktivira ostale komponente ovisne o e-pošti Android uređaja. Neke značajke ovisne o e-pošti uključuju mehanizme sigurnosti i oporavka. Još jedna značajka koja ovisi o e-pošti je pristup Trgovini Play, tržištu za Android aplikacija.
- Preglednik: Android dolazi sa zadanim preglednikom.
- Ladica za obavijesti: Klizanjem prema dolje po zaslonu izlaže se ladica s obavijestima. Pruža događaje aplikacije kojih bi korisnik trebao biti svjestan. Iznad obavijesti nalazi se skup prečaca do nekih često korištenih postavki uređaja koje korisnici mogu mijenjati. Ove postavke uključuju prekidače za uključivanje i isključivanje raznih hardverskih komponenti kao što su Bluetooth i Wifi. Dugi pritisak na te događaje omogućuje nam navigaciju do njihove stranice s konfiguracijama.
Ovaj se sloj naziva i korisničkom razinom za razliku od nižih slojeva koji su uglavnom podešeni za razvoj aplikacija. Programeri aplikacija stvaraju i prilagođavaju iskustva za svoje aplikacije na ovom sloju. Programeri aplikacija ne prilagođavaju slojeve ispod sloja aplikacije. Smatraju se dijelom sloja sustava. Ove slojeve prilagođavaju proizvođači uređaja, Google android timovi ili treće strane koje žele koristiti Android izvorni kod za njihov proizvod ili istraživanje.
Okvir za prijavu
The Android OS otkriva temeljne biblioteke i značajke Android uređaj koji koristi a Java API. To je ono što je poznato kao Android okvir. Okvir izlaže siguran i ujednačen način korištenja Android resursi uređaja.

1) Upravitelj aktivnosti
Aplikacije koriste Android komponenta aktivnosti za predstavljanje ulazne točke u aplikaciju. Android Aktivnosti su komponente koje sadrže korisničko sučelje s kojim korisnici aplikacije komuniciraju. Kako krajnji korisnici stupaju u interakciju s Android uređaja, pokreću se, zaustavljaju i skaču naprijed-natrag kroz mnoge aplikacije. Svaki navigacijski događaj pokreće aktivaciju i deaktivaciju mnogih aktivnosti u odgovarajućim aplikacijama.
The Android ActivityManager je odgovoran za predvidljivo i dosljedno ponašanje tijekom prijelaza aplikacija. ActivityManager pruža utor za kreatore aplikacija kako bi njihove aplikacije reagirale kada Android OS izvodi globalne akcije. Aplikacije mogu slušati događaje kao što je rotacija uređaja, uništavanje aplikacije zbog nedostatka memorije, pomicanje aplikacije izvan fokusa i tako dalje.
Neki primjeri načina na koji aplikacije mogu reagirati na ove prijelaze uključuju pauziranje aktivnosti u igri, zaustavljanje reprodukcije glazbe tijekom telefonskog poziva.
2) Upravitelj prozora
Android može odrediti informacije o zaslonu kako bi odredio zahtjeve potrebne za stvaranje prozora za aplikacije. Windows su utori u kojima možemo vidjeti korisničko sučelje naše aplikacije. Android koristi upravitelj prozora za pružanje ovih informacija aplikacijama i sustavu dok rade kako bi se mogli prilagoditi načinu na koji uređaj radi.
Upravitelj prozora pomaže u pružanju prilagođenog doživljaja aplikacije. Aplikacije mogu ispuniti cijeli zaslon za impresivno iskustvo ili dijeliti zaslon s drugim aplikacijama. Android to omogućuje dopuštanjem više prozora za svaku aplikaciju.
3) Upravitelj lokacije
most Android uređaji su opremljeni GPS uređajima koji mogu dobiti lokaciju korisnika pomoću satelitskih informacija do kojih se može ići sve do mjerenja preciznosti. Programeri mogu tražiti dopuštenje za lokaciju od korisnika, dostaviti lokaciju i svjesna iskustva.
Android također može koristiti bežične tehnologije za dodatno obogaćivanje detalja lokacije i povećanje pokrivenosti kada su uređaji u zatvorenim prostorima. Android pruža te značajke pod okriljem Location-Managera.
4) Voditelj telefonije
most Android uređaji imaju primarnu ulogu u telefoniji. Android koristi TelephoneManager za kombiniranje hardverskih i softverskih komponenti za pružanje značajki telefonije. Hardverske komponente uključuju vanjske dijelove kao što je SIM kartica i dijelove uređaja kao što su mikrofon, kamera i zvučnici. Softverske komponente uključuju izvorne komponente kao što su brojčanik, telefonski imenik, profili zvona. Pomoću TelephoneManagera programer može proširiti ili fino podesiti zadanu funkciju pozivanja.
5) Upravitelj resursa
Android aplikacije obično dolaze s više od samog koda. Imaju i druge resurse kao što su ikone, audio i video datoteke, animacije, tekstualne datoteke i slično. Android pomaže u osiguravanju učinkovitog, brzog pristupa tim resursima. Također osigurava isporuku pravih resursa krajnjim korisnicima. Na primjer, tekstualne datoteke odgovarajućeg jezika koriste se prilikom popunjavanja polja u aplikacijama.
6) Sustav prikaza
Android također pruža sredstva za jednostavno stvaranje uobičajenih vizualnih komponenti potrebnih za interakciju s aplikacijom. Ove komponente uključuju widgete kao što su gumbi, držače slika kao što je ImageView, komponente za prikaz popisa stavki kao što je ListView i mnoge druge. Komponente su unaprijed izrađene, ali se također mogu prilagoditi potrebama i brendiranju programera aplikacija.
7) Upravitelj obavijesti
Za informiranje je odgovoran Notification Manager Android korisnici aplikacijskih događaja. To čini dajući korisnicima vizualne, audio ili vibracijske signale ili njihovu kombinaciju kada se dogodi neki događaj. Ovi događaji imaju vanjske i unutarnje okidače. Neki primjeri internih okidača su događaji statusa niske napunjenosti baterije koji pokreću obavijest za prikaz niske napunjenosti baterije. Drugi primjer su događaji koje odredi korisnik poput alarma. Neki primjeri vanjskih okidača uključuju nove poruke ili otkrivene nove wifi mreže.
Android programerima i krajnjim korisnicima pruža sredstva za fino podešavanje sustava obavijesti. To im može pomoći da zajamče slanje i primanje događaja obavijesti na način koji najbolje odgovara njima i njihovim trenutačnim okruženjima.
8) Upravitelj paketa
Android također omogućuje pristup informacijama o instaliranim aplikacijama. Android prati informacije o aplikaciji kao što su događaji instalacije i deinstalacije, dopuštenja koja aplikacija zahtijeva i korištenje resursa kao što je potrošnja memorije.
Ove informacije mogu omogućiti programerima da aktiviraju ili deaktiviraju svoje aplikacije ovisno o novim značajkama koje predstavljaju popratne aplikacije.
9) Davatelj sadržaja
Android ima standardizirani način dijeljenja podataka između aplikacija na uređaju pomoću davatelja sadržaja. Programeri mogu koristiti davatelja sadržaja za izlaganje podataka drugim aplikacijama. Na primjer, mogu omogućiti pretraživanje podataka aplikacije iz vanjskih aplikacija za pretraživanje. Android sam izlaže podatke kao što su kalendarski podaci, podaci o kontaktima i slično koristeći isti sustav.
Android Runtime i Core/Native knjižnice

1) Android dužina trajanja
Android trenutno koristi Android Runtime (ART) za izvršavanje koda aplikacije. ART-u prethodi Dalvik Runtime koji je preveo programski kod u Dalvik izvršne datoteke (Dex datoteke). Ta su izvršna okruženja optimizirana za android platformu uzimajući u obzir procesorska i memorijska ograničenja na mobilnim uređajima.
Izvršno vrijeme prevodi kod koji su napisali programeri u strojni kod koji vrši izračune i koristi komponente android okvira za isporuku funkcionalnosti. Android ugošćuje više aplikacija i komponenti sustava koje svaka radi u svojim procesima.
Osnovne knjižnice
U ovom segmentu raspravljat ćemo o nekim od temeljnih biblioteka koje su prisutne u Android operacijski sustav.
2) MediaFramework
Android također izvorno podržava popularne medijske kodeke, što olakšava aplikacije stvorene na Android platforma za korištenje/reprodukciju multimedijskih komponenti izvan kutije.
3) SQLite
Android također ima SQLite baza podataka koji aplikacijama omogućuje vrlo brzu izvornu funkcionalnost baze podataka bez potrebe za bibliotekama trećih strana.
4) Slobodni tip
Android dolazi s unaprijed instaliranim brzim i fleksibilnim fontom. To omogućuje programerima aplikacija da stiliziraju komponente svoje aplikacije i isporuče bogato iskustvo koje prenosi namjeru programera.
5) OpenGL
Android također dolazi s OpenGL grafičkim sustavom. To je C biblioteka koja pomaže Android koristiti hardverske komponente u renderiranju 2D i 3D grafike u stvarnom vremenu.
6) SSL
Android također dolazi s ugrađenim sigurnosnim slojem koji omogućuje sigurnu komunikaciju između aplikacija na Android i drugi uređaji kao što su poslužitelji, drugi mobilni uređaji, usmjerivači 6.
7) SGL
Android dolazi s grafičkom bibliotekom implementiranom u kod niske razine koja učinkovito prikazuje grafiku za android platformu. Radi s komponentama više razine Android okvir Android grafički cjevovod.
8) Libc
Jezgra Android sadrži biblioteke napisane u C i C++, koji su jezici niske razine namijenjeni za ugrađenu upotrebu koji pomažu u maksimiziranju performansi. Libc pruža sredstva za izlaganje sistemskih funkcionalnosti niske razine kao što su Threads, Sockets, IO i slično ovim bibliotekama.
9) Webkit
Ovo je motor preglednika otvorenog koda koji se koristi kao osnova za izradu preglednika. Zadana vrijednost Android preglednik prije verzije 4.4 KitKat ga koristi za prikazivanje web stranica. Omogućuje programerima aplikacija da renderiraju web komponente u sustavu prikaza pomoću WebViewa. To aplikacijama omogućuje integraciju web komponenti u njihove funkcije.
10) Površinski upravitelj
Upravitelj površine odgovoran je za osiguravanje glatkog prikazivanja zaslona aplikacije. To čini komponiranjem 2D i 3D grafike za renderiranje. To dodatno omogućuje izvođenjem međuspremnika izvan zaslona.
Linux kernela
Korijenska komponenta Android Sustav je Linux kernel. To je temeljni dio koji omogućuje sve Androidfunkcionalnosti.
Linux Kernel je u borbama testiran softver koji je korišten u razvoju Operativnih sustava za uređaje širokog spektra, od superračunala do malih gadgeta. Ima ograničene mogućnosti obrade poput malih umreženih naprava za Internet stvari (IoT).
Linux Kernel se može prilagoditi kako bi zadovoljio specifikacije uređaja kako bi proizvođači mogli napraviti Android uređaji s različitim mogućnostima koji odgovaraju korisničkom iskustvu.
S obzirom na Android, kernel je odgovoran za mnoge temeljne funkcije uključujući, ali ne ograničavajući se na ove:
- Upravljački uređaji
- Upravljanje memorijom
- Procesno upravljanje
Proširimo neke od funkcija:
Upravljački programi uređaja
Linux kernel sadrži upravljačke programe koji su potrebni da operativnom sustavu omoguće rad s različitim hardverskim komponentama. Ovi upravljački programi pružaju standardno sučelje s kojim hardverske komponente različitih proizvođača mogu raditi.
Ovo proizvođačima uređaja omogućuje nabavu različitih komponenti, kao što su Bluetooth komponente, Wifi komponente, komponente kamere. Sve dok proizvođači odgovaraju Android standardne specifikacije, integracija je besprijekorna.
1) USB upravljački program
Linux također pruža Android sa sredstvom za povezivanje s USB uređajima. Moderni uređaji dolaze s različitim USB priključcima, uključujući USB 2.0 i nove verzije USB-a, uključujući USB-C. Ovi upravljački programi omogućuju korištenje USB priključka za punjenje, prijenos podataka uživo kao što su zapisi iz Android uređajima i komunicirati s androidom datotečni sustav.
2) Bluetooth upravljački program
Linux Kernel pruža podršku za povezivanje s Bluetooth hardverskim komponentama. Omogućuje čitanje i pisanje podataka primljenih s podržanih bluetooth radio frekvencija. Također pruža niz sadržaja za Android za konfiguraciju Bluetootha.
3) Wifi upravljački program
Linux kernel pruža upravljačke programe za integraciju hardverskih komponenti WiFi mreže. WiFi komponente ugrađene u mobilne uređaje omogućuju Android uređaji za povezivanje s wifi mrežama. Upravljački program omogućuje wifi komponentama emitiranje wifi mreža i stvaranje vrućih točaka.
4) Upravljački program zaslona
Android omogućuje povezivanje s komponentama zaslona. Za većinu uređaja komponenta sučelja je LCD zaslon osjetljiv na dodir. Omogućuje podršku za konfiguriranje i crtanje piksela.
5) Audio upravljački program
Android uređaji obično dolaze s hardverskim komponentama za audio ulaz i izlaz. Audio upravljački programi u kernelu omogućuju Android sustav za korištenje zvuka primljenog od ovih komponenti i stvaranje audio izlaza.
6) Upravitelj napajanja
most Android uređaji se koriste dok su isključeni iz utičnica. Stoga ovise o baterijama koje ih napajaju tijekom velikog dijela upotrebe. Linux Kernel dolazi sa sustavom upravljanja napajanjem koji se može konfigurirati kako bi zadovoljio potrebe uređaja koji ga koriste.
Android OS koristi upravitelj napajanja kako bi uključio druge komponente na uređaju. To čini emitiranjem različitih stanja povezanih s snagom. Ova stanja su Standby, Sleep i Low Battery. Na Android, upravitelj napajanja podešen je na zadani način mirovanja kako bi se osiguralo maksimalno trajanje baterije.
Power Manager izlaže sredstva za aplikacije da reagiraju na različite načine napajanja. Aplikacije također mogu promijeniti svoje ponašanje kako bi odgovaralo trenutnom stanju napajanja uređaja.
Aplikacija također može zatražiti promjenu zadanih pravila napajanja. Aplikacije mogu postići željenu funkcionalnost, kao što je održavanje hardverskih komponenti aktivnima. Primjer je održavanje zaslona aktivnim tijekom čitanja knjige kako bi se osiguralo da korisnik ne bude ometen. Drugi primjer je držanje audio komponenti uključenima dok slušate glazbu u pozadini.
7) Flash memorija
most Android uređaji koriste flash memoriju kao sredstvo za pohranu. Flash memorija je brza i zauzima manje prostora što je čini savršenom za male uređaje. Linux kernel pruža sredstvo za Android uređaji za čitanje i pisanje u flash memoriju. Omogućuje način particioniranja memorije na takav način da OS i druge aplikacije mogu jednostavno i učinkovito dijeliti memorijski resurs.
8) Vezivo
Android ugošćuje mnoge aplikacije i komponente sustava koje svaka izvršava u svojim procesima. U većini slučajeva ti bi procesi trebali biti izolirani jedan od drugoga kako bi se spriječile smetnje i oštećenje podataka. Ipak, postoje slučajevi kada želimo prenijeti podatke iz jednog procesa u drugi.
Jezgra Linuxa omogućuje funkciju dijeljenja podataka pružanjem upravljačkih programa za vezivanje. Binder driveri omogućuju međuprocesnu komunikaciju, IPC. Korištenje IPC procesa može otkriti druge procese i dijeliti informacije.
Upravljanje memorijom
Još jedna odgovornost Linux Kernela je upravljanje memorijom. Kako se različite aplikacije pokreću, Kernel osigurava da memorijski prostor koji koriste ne dolazi u sukob i ne prepisuje jedan drugoga.
Također pomaže osigurati da sve pokrenute aplikacije dobiju odgovarajuću memoriju za rad, osiguravajući da niti jedna aplikacija ne zauzima previše prostora.
Procesno upravljanje
Svaka aplikacija u Android radi u procesu. Kernel je također odgovoran za upravljanje procesima. To znači da je odgovoran za stvaranje, pauziranje, zaustavljanje, gašenje ili zaustavljanje procesa.
Kernel omogućuje razne funkcionalnosti kao što je pokretanje više procesa u isto vrijeme, komunikacija između procesa, pokretanje procesa u pozadini itd.
Budući da svaki proces zahtijeva vlastiti memorijski prostor za ispravno funkcioniranje, kernel osigurava da su memorijski prostori dodijeljeni svakom procesu zaštićeni od drugih procesa. Također osigurava da resursi poput RAM dodijeljeni procesima oslobađaju se kada se procesi zatvore.
Linux kernel također je odgovoran za distribuciju rada na procesore prisutne u uređaju. To omogućuje maksimiziranje performansi uređaja s više jezgri jer će različite aplikacije imati procese koji se izvode na različitim jezgrama.
Linux kernel obavlja više zadataka ispod haube, uključujući provođenje sigurnosti.
Rezime
- Android arhitektura je organizirana u slojevima.
- Svaki sloj rješava jedinstven skup problema.
- Krajnji korisnici komuniciraju s aplikacijama na aplikacijskom sloju
- Programeri aplikacija razvijaju aplikacije koje će se koristiti na aplikacijskom sloju. Oni to čine pomoću alata i apstrakcija koje pruža Application Framework.
- Android Sloj okvira pojednostavljuje pristup komponentama niske razine stvaranjem API-ja preko izvornih biblioteka.
- Android Runtime i Core-Libraries koriste jezike niske razine zajedno s optimizacijama za mobilne uređaje. To osigurava nesmetan rad koda koji su napisali programeri aplikacija Android ograničenja uređaja.
- Na dnu Android softverski skup je Linux kernel. Povezuje se s uobičajenim hardverskim komponentama Android uređaja.