Digitalna papazjanija

Uvod u arhitekturu Android OS-a za programere

Ovo je prvi iz serije tekstova o programiranju na Andorid platformi, o čemu ću više pisati u narednom periodu. Pre nego što krenete da radite bilo šta vezano za razvoj aplikacija za ovu platformu, potrebno je da se upoznate sa samom arhitekturom Androida, a Google tim je za tu priliku pripremio 3 odlična video klipa iz Andriodology serijala sa objašnjenjem najosnovnijih stvari koje traba da znate o samoj organizaciji arhitekture OS-a, životnom ciklusu aplikacija, procesima i osnovnim svojstvima API-ja koji Android SDK omogućava.

Ovde ću ukratko opisati sve ono što je bitno za predznanje pre no što krenete u pisanje svoje Hello World aplikacije, no u svakom slučaju preporučujem da pogledate ova tri video snimka u kojima je sve, kroz primere, objašnjeno.

Pregled arhitekture

U prvom video snimku objašnjena je arhitektura i interna organizacija samog Androida. U osnovi svega nalazi se modifikovani Linux kernel 2.6 koji se brine za komunikaciju sa hardverom, drajvere, upravljanje procesima i memorijom. Sam Linux kernel napisan je u programskom jeziku C. Iznad kernela, nalaze se sistemske biblioteke pisane u C++ programskom jeziku i tu su stvari vezane za rad sa grafikom, fontovima, multimedijom, čuvanjem podataka, obradom web strana i sl. Na njih se vezuje Android Runtime u kome se istovremeno može izvršavati više Delvik virtuelnih mašina. Čisto podsećanja radi, Delvik je virtuelna mašina za Java programe koja je napisana nezavisno od Java VMa, a u osnovi radi istu stvar, samo na malo drugačiji način. Naime, Java bytecode (.class) se ne izvršava kao takav, već se više klasa prevodi u jedan jedinstveni Delvik izvršni format (.dex) koji je optimizovan za rad na slabijim procesorima i zahteva manje memorije – što je pogodno za mobilne uređaje. Na vrhu svega (programerski) je Application Framework, pisan u Java programskom jeziku, gde su sve komponente koje su bitne programerima koji žele da razvijaju aplikacije za Android platformu. Tu su razni menadžeri koji se brinu za rad sa akcijama, prozorima, sadržajem, resursima, notifikacijama, lokaciji, telefonskim opcijama i rad sa paketima. U dotičnom framework-u napisane su sve aplikacije, uključujući i one koje fabrički dolaze uz Android i one koje pišu drugi developeri.

Životni ciklus aplikacije

Sledeća stvar, posle same arhitekture, koja je bitna programerima je kako se sama aplikacija ponaša u toku izvršavanja i kako se odvija multitasking. Nije da se o ovome ne brine svaki operativni sistem i da je ovo u osnovi svakog računara, počevši od onih prvih centralizovanih na koje su nakačeni terminali koji dobijaju deo po deo procesorskog vremena – jer se u jednom trekutku mogu izvršavati instrukcije samo jedne aplikacije, ali nije zgore pogledati kako se konkretno to odvija na Androidu. Kako je svaki deo memorije, a i procesorske snage, uvek bitan (što zbog bržeg i efikasnijeg rada, to i zbog potrošnje električne energije i trajanja baterije) sistem se trudi da u aktivnosti drži samo ono što je u tom trenutku neophodno (kao i ono što bi uskoro/sledeće moglo da nam zatreba). Stoga se, ukoliko imamo više aktivnih aplikacija, čuvaju stanja aplikacija koje rade u pozadini (na osnovu kojih sistem kasnije može da restauira sadržaj) a same procese ubija oslobađajući resurse za aplikaciju koja je trenutno prikazana na ekranu. Kada želimo da se vratimo na neku od pokrenutih aplikacija, sistem ponovo pokreće instancu željene aplikacije i restauira prethodno stanje, što rezultuje da mi vidimo sve identično kao kada smo iz aplikacije izašli tj. prešli na novu aplikaciju.

API u Androidu

U trećem video snimku ukratko su opisane mogućnosti nekoliko zanimljivijih API-ja i način na koji se isti mogu primeniti u našoj aplikaciji. Predstavljeni su: Location Manager uz pomoć koga se lako barata sa mapama i geografksim podacima vezanim za iste; XMPP servis koji koristi Gmail infrastrukturu i uz pomoć koga se mogu razmenjivati bilo kakvi podaci između više uređaja, bilo da su to određene vrednosti bitne za neku aplikaciju, geografki podaci ili poruke za ćaskanje; Notification Manager koji na jedinstveni način integriše i prikazuje poruke iz bilo koje aplikacije, web servisa ili sl. koje korisnik vidi na svom početnom ekranu; Pogledi (Views) koji sadrže standardne komponente uz pomoć kojih se izgrađuju kompleksnije aplikacije…

Posle ovoga, napisaću uputstvo: šta je sve potrebno instalirati i kako se podešava razvojno okruženje za programiranje aplikacija za Android platrofmu.