SERVIS<>
012010<><>

Programiranje mobilnih telefona (1): Google Android

Programiranje Androida

Sve što je neophodno da znate i imate da biste naterali Androida da se ponaša i po vašoj, pa a ne samo tuđoj volji...

Kao i sve ostalo što je izašlo iz kuhinje firme Google, tako je i operativni sistem Android, namenjen prenosnim uređajima, privukao veliki publicitet i bio najavljivan kao nešto potpuno revolucionarno u svetu prenosnih uređaja. Osim samog Googlea, iza operativnog sistema Android stoji i niz vodećih svetskih kompanija iz oblasti telekomunikacija koje čine „Open Handset Alliance”, tako da su šanse ovog operativnog sistema da ravnopravno uđe u borbu sa postojećim operativnim sistemima velike. Ekspanzija mobilnih telefona baziranih na Android OS-u ipak nije bila tako rapidna kao što su mnogi očekivali, budući da je od pojave Android prvenca, modela G1, pa do njegovog prvog naslednika prošlo više od pola godine. Međutim, stvari se zahuktavaju i na tržištu je iz meseca u mesec sve više telefona baziranih na Androidu. Pojedini modeli već su dostupni i na našem tržištu.

Ono što je veoma značajno za Android OS jeste činjenica da se radi o open source projektu, što znači da je izvorni kôd operativnog sistema svima dostupan za korišćenje i modifikaciju. To ga čini veoma privlačnim za kompanije koje žele da ga ugrade u svoje uređaje, a da pri tom nikom ništa ne plate. Gledano sa stanovišta programera (dakle nas), radi se o operativnom sistemu koji nudi veoma pogodno okruženje za razvoj aplikacija u programskom jeziku visokog nivoa kakva je Java, uz odličnu dokumentaciju i prateće alate koji su uz to potpuno besplatni. Pošto se radi o mladoj platformi, broj visokokvalitetnih aplikacija zasad je relativno mali, uprkos činjenici da se iz dana u dan pojavljuju desetine i desetine novih naslova. Ukoliko imate dobru ideju i uz to poznajete programski jezik Java (ili želite da ga naučite), pravi je trenutak da uskočite na voz koji se zahuktava i pođete s nama u čudesnu vožnju kroz pejzaže Android sveta.

Vežite pojas

Početna tačka za Android programere svakako je portal www.android.com. Ovaj portal nudi pristup neophodnim alatima i dokumentaciji za razvoj Android aplikacija (developer.android.com), platformi za distribuciju aplikacija (market.android.com) i kompletnom izvornom kôdu operativnog sistema Android (source.android.com). Takođe, na stranicama portala može se naći mnoštvo video zapisa posvećenih različitim aspektima Android platforme, od korisnih saveta za korisnike telefona pa do pregleda najnovijih verzija Android OS-a.

Kada je Android platforma u pitanju, razvoj i distribucija aplikacija su dve odvojene stvari. Razvoj aplikacija omogućen je svima – dovoljno je samo preuzeti potrebne alate sa Android developer sajta i baciti se na posao. Međutim, kada želite da svoje aplikacije ponudite korisnicima, najbolji način da to uradite je preko Android Marketa, online platforme koju održava Google i koja se u okviru Android OS-a pojavljuje kao poželjan način za instalaciju novih aplikacija. Da bi se vaša aplikacija pojavila na Android Marketu potrebno je da budete registrovani Android developer, za šta je potrebno izdvojiti 25 dolara. Potom vašu aplikaciju možete dodati u neku od kategorija Android Marketa, birajući pri tom hoće li ona biti besplatna za korisnike ili će se za nju plaćati. To je sve što je potrebno učiniti da bi vaša aplikacija postala dostupna milionima korisnika Android telefona, sve ostalo je pitanje kvaliteta aplikacije i interesovanja korisnika. Naravno, uvek možete izabrati i teži put za distribuciju aplikacije sopstvenim kanalima, ali to vam nikako ne bismo preporučili.

Podesite retrovizor

Početni korak koji treba napraviti kako bi se ušlo u svet Android programiranja je uspostavljanje odgovarajućeg razvojnog okruženja. Prva neophodna komponenta je Android SDK (Software Development Kit) koji sadrži neophodne alatke za debagovanje, simulaciju i razvoj aplikacija. Instalacija Android SDK-a sastoji se iz dve faze. Prva se svodi na preuzimanje SDK arhive i raspakivanje u željeni folder, uz dodavanje putanje do instalacionog foldera u sistemski PATH. Pošto uz novu verziju SDK-a zbog veličine ne dolaze postojeće verzije Android platforme (1.5, 1.6, 2.0...), one se posebno downloaduju korišćenjem programa „SDK Setup”, koji se nalazi u osnovnom folderu SDK arhive. Zašto se download postojećih verzija platforme radi odvojeno, biće vam jasno ukoliko se odlučite da ih sve preuzmete – krajnja veličina SDK foldera sa svim trenutno raspoloživim platformama je oko 840 MB! Valja napomenuti to da je jedan od preduslova za rad Android SDK-a postojanje instalacije Java SDK 5 ili 6 na računaru (vodite računa o tome da Java SDK nije isto što i JRE – Java Runtime Environment, koji je obično već instaliran na vašem računaru). Instalacija Java SDK-a može se preuzeti sa Sunovog sajta (java.sun.com/javase/downloads).

Uključite Bluetooth sluške

SDK koji smo instalirali u prvom koraku je razvojno jezgro, ali razvoj aplikacija u 21. veku zahteva komfor i efikasnost, dakle adekvatno integrisano razvojno okruženje (IDE – Integrated Development Environment) koje vam pruža priliku da iz njega jednostavno editujete, kompajlirate, debagujete, simulirate – jednom rečju razvijate aplikaciju. Preporučeni IDE za Android je Eclipse, univerzalni IDE, koji se uz odgovarajuće proširenje (plug-in) pretvara u odlično okruženje za razvoj Android aplikacija. Sa Eclipse sajta (www.eclipse.org/downloads) može se preuzeti neka od preporučenih Eclipse distribucija (Java ili ECP verzije su preporučene od strane Googlea). Sam Eclipse ne zahteva posebnu instalaciju – dovoljno je samo preuzetu arhivu raspakovati, pokrenuti Eclipse.exe i voila! – pred vama je jedno od trenutno najpopularnijih razvojnih okruženja na svetu.

Eclipse je sam po sebi univerzalno razvojno okruženje, tako da ga je potrebno odgovarajućim proširenjima prilagoditi razvoju Android aplikacija. Proširenja često zavise od drugih proširenja, što za neiskusne korisnike Eclipsea može da se pretvori u noćnu moru. Zato preporučujemo da sve to izbegnete preuzimajući neku od preporučenih dostribucija Eclipsea, budući da one imaju sve komponente od kojih Android plugin zavisi. Googleov plugin za Eclipse zove se ADT (Android Development Tools) i njegova instalacija vrši se korišćenjem opcije Remote update, što se svodi na to da Eclipse automatski preuzme i instalira plugin sa internet lokacije koju je obezbedio Google. Proces instalacije veoma je dobro dokumentovan na Android developer sajtu, tako da se time sada nećemo baviti.

 
ADT plugin dodaje Eclipseu mogućnosti kreiranja Android projekata sa svim potrebnim resursima koje zahteva jedna Android aplikacija. Takođe, ADT integriše debager, kompajler i omogućava kreiranje .APK arhiva. Naravno, ADT podržava i direktnu vezu s telefonom na kojem testirate softver, tako da u toku razvoja Android aplikacija nećete imati potrebe da napuštate okruženje Eclipse.

Jedan od najboljih načina da brzo naučite programiranje na novoj platformi svakako je proučavanje izvornog kôda gotovih aplikacija. Na svu sreću, Internet je prepun veoma korisnih primera Android aplikacija koji će vam uštedeti mnogo vremena oko rešavanja pojedinih problema. Veliki deo projekata može se skinuti korišćenjem SVN klijenta sa nekog od besplatnih SVN servera (najčešće je to code.google.com), tako da je poželjno da imate SVN klijent instaliran na razvojnoj mašini. Naravno, i za SVN postoji mnoštvo Eclipse pluginova koje možete koristiti, a Subclipse (subclipse.tigris.org) je jedan od onih koje možemo da preporučimo.

Proverite motor

Kada kažemo da je Android operativni sistem, to je... hmmm... relativno tačna izjava. Razlog za ovo je činjenica da je najniži nivo Androida zapravo Linux kernel 2.6, koji predstavlja sloj softvera koji razdvaja konkretan hardver od ostatka softvera. Kernel u sebi sadrži niz drajvera koji su zaduženi za pojedine delove hardvera telefona (kamera, WiFi, audio...), programsku podršku za upravljanje memorijom, procesima – dakle sve ono što čini jedan klasičan operativni sistem. Programer Android aplikacija generalno nema direktan pristup Linux kernelu, već mu se prema potrebi obraća preko biblioteka koje se nalaze u narednom sloju softvera. Dakle, naredni sloj Android platforme (namerno nećemo reći OS-a) sastoji se od C/C++ biblioteka koje se direktno oslanjaju na Linux kernel i nude razne funkcije na višem nivou apstrakcije. Bibliotečki sloj nudi, na primer, biblioteku za rad sa različitim formatima audio/video zapisa (MP3, H.264, AAC i slične), potom pruža podršku za 2D/3D grafiku kroz Surface Manager biblioteku, prikaz fontova se bazira na biblioteci FreeType itd.

Kod Android platforme većina stvari se vrti oko Jave. Stoga je jedan od najbitnijih softverskih slojeva Android platforme Android Runtime, u kojem se nalaze biblioteke neophodne za funkcionisanje programskog jezika Java. Pored biblioteka, glavni deo ovog runtime sloja je virtuelna mašina Dalvik, optimizovana za rad na platformi sa ograničenim resursima kakav je mobilni telefon. Svaka aplikacija koja se pokrene na Androidu se izvršava u posebnoj instanci Dalvik virtuelne mašine, tako da je Dalvik optimizovan i po pitanju potrošnje programske memorije.

Treći sloj Android platforme je takozvani Application Framework. To je niz resursa kojima programer pristupa preko svima dostupnih API-ja i koji se koriste za razvoj aplikacija i kontrolu njihovog ponašanja. Uz upotrebu delova ovog sloja programer može pristupati pojedinim funkcijama određenih hardverskih komponenti (GPS, na primer). Ovaj sloj nudi veoma inventivne mehanizme za reuse pojedinih komponenti, prati životni vek aplikacija, omogućava aplikacijama da dele resurse, da se registruju kao nosioci određenih operacija i još mnogo toga. Može se reći da je u ovom sloju Androida najveći deo onoga što ovu platformu razlikuje od drugih mobilnih platformi.

Najviši sloj Android softvera jeste aplikativni sloj – dakle onaj u koji spadaju korisničke aplikacije. Sav aplikativni softver, uključujući i onaj koji dolazi kao deo Android platforme, zasniva se na Application Framework funkcionalnostima, što čini da nema „diskriminacije” između slobodnih programera i onih koji razvijaju softver za proizvođače telefona.

Pazite na signalizaciju

Sada kada znamo ponešto o potrebnim alatima i o strukturi operativnog sistema, vreme je da se upoznamo i sa osnovnom organizacijom Android aplikacija. Krenimo od onog što je najuočljivije u svakoj aplikaciji – korisničkog interfejsa. Na Android platformi korisnički interfejs se formira u okviru aktivnosti (Activity), koje generalno predstavljaju jednu smislenu operaciju koju korisnik može da uradi. Tako je, na primer, lista kontakata jedna aktivnost, stranica za unos podataka o kontaktu druga aktivnost i tako dalje. Svaka aplikacija se sastoji od niza aktivnosti, pri čemu jedna aplikacija može koristiti aktivnosti druge aplikacije – ako je, na primer, vašoj aplikaciji potrebno da vas odvede na web stranicu koristićete adekvatnu aktivnost brauzera, a ako vam je potrebno da prikažete poziciju na mapi koristićete odgovarajuću aktivnost Google Mapsa.

Za razliku od aktivnosti koje su uvek povezane sa vizuelnim delom aplikacija, postoje i servisi (Service) koji su zaduženi za radnje koje se odvijaju u pozadini. Tako, na primer, servis u pozadini može da prati poziciju korisnika, reprodukuje muziku, da prati da li su vam stigle nove čet poruke i slično. Servis može da obezbedi odgovarajući interfejs preko kog ga aplikacije mogu kontaktirati i njime upravljati. Dakle, ukoliko želite da kreirate bilo kakvu aktivnost bitnu za vašu aplikaciju, a koja se odvija u pozadini, u trenutku kada vaša aplikacija nije prikazana na ekranu – servisi su ono što vam je potrebno.

Za aplikacije je često korisno da prate različite događaje na telefonu: promenu stanja baterije, dolazeći poziv i slično. Za ovakve potrebe Android programeri koriste prijemnike događaja (Broadcast receivers) koji se, slično servisima, odvijaju u pozadini, naravno uz mogućnost da pokrenu odgovarajuću aktivnost koja će korisnika o nečemu informisati. Većina događaja potiče iz operativnog sistema, ali i same aplikacije mogu da emituju događaje koji mogu biti od interesa drugim aplikacijama. Svaka aplikacija može da registruje proizvoljan broj prijemnika događaja i na osnovu njih vršiti interakciju s korisnikom.

Na kraju, Android nudi i provajdere sadržaja (Content providers), komponente koje deo svojih podataka dele sa ostalim aplikacijama preko specifičnog interfejsa. Podaci mogu biti iz SQLite baze podataka, iz fajl sistema ili bilo kog drugog izvora podataka koji Android platforma podržava. Interfejs koji provajderi sadržaja nude je takav da omogućava komunikaciju sa svakom aplikacijom. Oko toga od kog će kontent provajdera određena vrsta podataka biti preuzeta brine se Content resolver.

Pazite na ostale učesnike

Komunikacija između navedenih komponenti Android aplikacija vrši se na dva načina – za provajdere sadržaja potrebno je koristiti razrešivače sadržaja (Content Resolver), dok se za ostale tri vrste komponenti koriste namere (Intent). Namere su asinhrone poruke kojima se startuju aktivnosti ili servisi ili se pomoću njih iniciraju ili dostavljaju događaji. Korišćenje namera za svaku vrstu komponenti pomalo je specifično, ali predstavlja jedinstven način razmene poruka između aplikacija ili delova aplikacija.

Kao i sve novo što se započinje, tako i programiranje na Android platformi u početku donosi mnogo toga nepoznatog. Međutim, ono što je uvek bila karakteristika bilo kog Googleovog proizvoda jeste odlična dokumentacija, koja ni ovog puta nije izostala. Google daje niz veoma korisnih tutorijala sa već gotovim kôdom uz koje se brzo i efikasno savladavaju osnovni koncepti Android platforme. Osim Googlea, tu je i standardno velika zajednica Android programera, koja najčešće nesebično deli svoj kôd i znanja sa drugima, pa odgovore na svoja pitanja uglavnom možete naći brzo i lako.

Nova kategorija vozača

Ukoliko ste željni programerskih izazova i želite da se oprobate u svetu Android aplikacija, pravi je trenutak za vas. Pošto se radi o novoj platformi sa relativno skromnom ponudom gotovog softvera, dovoljna je dobra ideja da vašu aplikaciju učini popularnom. Naravno, sve ovo će zahtevati i dosta rada i učenja, ali to je jedini siguran način da u tome što radite i uspete.

Dejan STEFANOVIĆ

 
 TRŽIŠTE
(R)Evolucija izdavaštva (3): e-book reader uređaji

 NA LICU MESTA
Intel Westmere Workshop, Minhen,
Otvaranje Pakom informatičkog centra, Niš
Web fest 2009
Incotech 2009, Zrenjanin
Ostali događaji, ukratko

 KOMPJUTERI I FILM
„Princeza i žabac”
„Avatar”

 SERVIS
Windows 7: problemi pri instalaciji i radu
GPS van automobila
Programiranje mobilnih telefona (1): Google Android
Šta mislite o ovom tekstu?
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera