Muc d: Nhp mn Frank Ableson, Software designer 22 01 2011 Android l mt mi truong h diu hnh hon chinh dua trn h diu hnh nhn Linux V2.6. Lc du, dch trin khai di voi Android l linh vuc din thoai di dng, gm cc loai din thoai thng minh v cc loai thit bi din thoai kiu gp chi ph thp. Tuy nhin, pham vi dy du cc dich vu din ton cua Android v su h tro chuc nng phong ph cua n c tim nng mo rng vuot ra ngoi thi truong din thoai di dng. Android c th huu ch di voi cc nn tang v ung dung khc. Trong bi vit ny, ban s duoc gioi thiu v nn Android v hoc cch vit m mt ung dung Android co ban. Gii thiu BlackBerry v iPhone, voi cc nn di dng dung luong cao v hp dn, dang nhm dn hai du nguoc chiu nhau cua ph cc din thoai di dng. BlackBerry vung chc nhu d di voi nhung nguoi su dung muc nghip vu chuyn nghip. D lm mt thit bi tiu dng, n kh canh tranh duoc voi iPhone v tnh d su dung v yu t tuyt tc (cool factor). Android, mt nn tang vn cn tre v chua duoc kim chung, c tim nng dng vai tr o ca hai du cua ph cc din thoai di dng v thm ch c th lm cu ni qua h su ngn cch giua lm vic v vui choi. Ngy nay, c nhiu thit bi dua trn mang hay c kha nng ni mang chay mt bin thi h diu hnh nhn Linux. D l mt nn vung chc: c hiu qua v chi ph khi trin khai v h tro, v sn sng duoc chp nhn nhu l mt cch tip cn thit k tt d trin khai. Giao din nguoi su dung dnh cho cc thit bi nhu vy thuong dua trn HTML v c th xem duoc bng mt trnh duyt cho PC hay Mac. Nhung khng phai vt dung no cung cn diu khin bng mt thit bi tnh ton chung. Hy xem xt mt vt dung thng thuong, chng han nhu mt l nuong, l vi sng hoc d lm bnh m. Diu g xay ra nu cc vt dung gia dnh cua ban duoc Android diu khin v hnh din khoe ra mt mn hnh mu cam ung? Voi mt giao din nguoi su dung Android trn mt l, tc gia thm ch c th nu nuong mt mn g d. Trong bi ny, chng ta hy tm hiu v nn Android v cch c th su dung n nhu th no cho cc ung dung di dng v khng phai di dng. Hy ci dt B cng cu pht trin phn mm Android (Android SDK) v xy dung mt ung dung don gian. Hy Tai v m ngun cua ung dung mu trong bi vit ny.
Luoc s v Android Nn Android l san phm cua Open Handset Alliance (Lin minh thit bi cm tay mo), mt tp don cc t chuc cng hop tc voi nhau d xy dung nn mt loai din thoai di dng tt hon. Tp don do Google dung du ny gm cc nh vn hnh (din thoai) di dng, cc nh san xut thit bi cm tay, san xut linh kin, cc nh cung cp nn v giai php phn mm, v cc cng ty tip thi. Tu mt quan dim pht trin phn mm, Android nm chnh giua th gioi m ngun mo. Thit bi cm tay c kha nng Android du tin trn thi truong l thit bi G1 do HTC san xut v duoc bn trn T- Mobile. N tro nn sn c sau gn mt nm dn dai, khi m cc cng cu pht trin phn mm sn c duy nht chi l mt s ban pht hnh B cng cu pht trin phn mm (SDK) duoc cai tin dn tung buoc. Khi ngy pht hnh G1 gn dn, nhm Android d pht hnh SDK V1.0 v cc ung dung bt du vuot ln nhm toi nn tang moi ny. D kch thch di moi, Google d ti tro hai vng cuc thi "Cc Thch thuc Nh Pht trin Android," noi m hng triu d la duoc d vo cc ung dung du thi hng du. Vi thng sau G1, Android Market duoc pht hnh, cho php nguoi su dung duyt v tai v cc ung dung truc tip vo din thoai cua ho. Trong khoang 18 thng, mt nn di dng moi d buoc ln vu di cng khai. Page 1 of 11 Nhp mn pht trin ung dung Android
Nn tng Android Voi kha nng rng ri cua Android, s rt d dng nhm ln n voi mt h diu hnh my tnh d bn. Android l mt mi truong phn tng, xy dung trn nn cua h diu hnh nhn Linux, v n bao hm nhiu chuc nng phong ph. H thng con giao din nguoi su dung gm c: Cua s Khung nhn Cc tiu trnh d hin thi cc phn tu ph bin nhu cc hp bin soan, danh sch, danh sch tha xung Android gm mt trnh duyt c th nhng vo duoc, duoc xy dung dua trn WebKit, chnh l my (engine) trnh duyt m ngun mo cung dang l dng co cua trnh duyt Safari di dng cua iPhone. Android khoe ra mt mang di do nhiu ty chon kt ni, gm WiFi, Bluetooth, v du liu khng dy qua mt kt ni di dng (nhu GPRS, EDGE, v 3G). Mt k thut ph bin trong cc ung dung Android l lin kt toi Google Maps d hin thi mt dia chi truc tip trong mt ung dung. Vic h tro cho cc dich vu dua trn dia dim (chng han nhu GPS) v cc dung cu do gia tc cung c sn trong chng phn mm Android, mc d khng phai tt ca cc thit bi Android duoc trang bi voi cc phn cung cn thit. Cung c ca h tro my anh (camera) nua. V mt lich su, c hai linh vuc m cc ung dung di dng d gng suc theo kip cc di tc my tnh d bn l d hoa/da phuong tin, v phuong thuc luu tru du liu. Android giai quyt thch thuc v d hoa bng su h tro dung sn cho d hoa 2-D v 3-D, gm ca thu vin OpenGL. Gnh nng luu tru du liu duoc giam nhe v nn Android c gm ca co so du liu SQLite m ngun mo ph bin. Hnh 1 cho thy mt khung nhn don gian ho v cc tng phn mm Android.
Hnh 1. Cc tng phn mm Android
Kin trc ng dung Nhu d d cp, Android chay bn trn mt h diu hnh nhn Linux. Cc ung dung Android duoc vit bng ngn ngu lp trnh Java, v chng chay trong mt my ao (VM). Diu quan trong l phai luu rng VM khng phai l mt my Page 2 of 11 Nhp mn pht trin ung dung Android ao Java (JVM) nhu ban cho doi, m l my ao Dalvik (Dalvik Virtual Machine), mt cng ngh m ngun mo. Mi ung dung Android chay trong mt c th cua my ao Dalvik, dn luot mnh, c th my ao ny nm trong mt tin trnh do nhn Linux quan l, nhu trnh by duoi dy.
Hnh 2. My ao Dalvik
Mt ung dung Android gm c mt hoc nhiu phn loai sau dy: Hot dng Mt ung dung c mt giao din nguoi dng nhn thy duoc, s duoc thuc hin bng mt hoat dng. Khi nguoi su dung chon mt ung dung tu mn hnh chu hoc trnh khoi chay ung dung, mt hoat dng duoc khoi dng. D|ch v Mt dich vu nn duoc su dung di voi bt ky ung dung no cn tn tai trong mt thoi gian di, chng han nhu mt trnh gim st mang hoc ung dung kim tra-cp nht. Trnh cung cp ni dung Ban c th coi cc trnh cung cp ni dung nhu l mt my chu co so du liu. Cng vic cua mt trnh cung cp ni dung l quan l truy cp vo du liu dang tn tai, chng han nhu mt co so du liu SQLite. Nu ung dung cua ban rt don gian th ban khng nht thit phai tao ra mt trnh cung cp ni dung. Nu ban dang xy dung mt ung dung lon hon, hoc mt ung dung d cung cp du liu sn sng cho nhiu hoat dng hoc ung dung khc, mt trnh cung cp ni dung l phuong tin truy cp du liu cua ban. Trnh thu sng pht Mt ung dung Android c th duoc khoi chay d xu l mt phn tu du liu hoc dp ung mt su kin, chng han nhu nhn mt vn ban thng bo. Mt ung dung Android, cng voi mt tp tin tn l AndroidManifest.xml, duoc trin khai ln mt thit bi. AndroidManifest.xml chua cc thng tin cu hnh cn thit d ci dt n dng dn vo thit bi. N gm cc tn lop cn thit v cc kiu su kin m ung dung c th xu l, v cc quyn han ung dung cn c d chay. Th du, nu mt ung dung di hoi vic truy cp vo mang d tai v mt tp tin chng han th quyn han ny phai duoc tuyn b mt cch tuong minh trong tp tin manifest. Nhiu ung dung c th c cc quyn han ring ny duoc kch hoat. Dam bao an ninh bng khai bo nhu vy gip giam bot kha nng xay ra l mt ung dung xu c th lm thit hai thit bi cua ban. Phn tip theo bn lun v mi truong pht trin cn c d xy dung nn mt ung dung Android.
Cc cng cu di hi phi c Cch d nht d bt du pht trin cc ung dung Android l tai v B cng cu pht trin phn mm Android v Mi Page 3 of 11 Nhp mn pht trin ung dung Android truong pht trin tch hop Eclipse (Eclipse IDE) (xem phn Ti nguyn). Vic pht trin Android c th din ra trn Microsoft Windows, Mac OS X, hoc Linux. Bi vit ny gia thit rng ban dang su dung Mi truong pht trin tch hop Eclipse v trnh cm thm Android Developer Tools dng cho Eclipse. Cc ung dung Android duoc vit bng ngn ngu Java, nhung bin dich v thi hnh bng my ao Dalvik (mt my ao khng phai Java). Vit m bng ngn ngu Java trong Eclipse l rt truc quan; Eclipse cung cp mt mi truong Java phong ph, gm ca vic tro gip theo ngu canh v cc mch nuoc goi v m. Khi b m Java cua ban duoc bin dich sach s, Android Developer Tools s dam bao rng ung dung d duoc gi dng dn, gm ca tp tin AndroidManifest.xml. C th pht trin cc ung dung Android m khng cn Eclipse v v trnh cm thm Android Developer Tools, nhung ban s cn phai bit cch su dung B cng cu pht trin phn mm Android. B cng cu pht trin phn mm Android duoc phn phi duoi dang mt tp tin nn ZIP v giai nn vo mt thu muc trn dia cua ban. Do c mt vi cp nht B cng cu pht trin phn mm (SDK), ban nn giu cho mi truong pht trin cua ban c t chuc tt d ban c th d dng chuyn di giua cc ban ci dt SDK. SDK gm c: android.jar Tp tin luu tru Java chua ton b cc lop SDK Android cn thit d xy dung ung dung cua ban. documention.html v thu mc docs Ti liu SDK duoc cung cp tai ch v trn Web. Chu yu n o dang JavaDocs, tao diu kin d dng cho vic dn huong trong nhiu gi trong SDK. Ti liu cung gm ca mt Huong dn Pht trin muc cao v cc lin kt dn cng dng Android rng ri hon. Thu mc samples (cc v d mu) Thu muc con samples chua b m ngun dy du dng cho mt loat cc ung dung, gm ca ApiDemo, n su dung nhiu API. Ung dung mu l mt noi khm ph tuyt voi khi bt du pht trin ung dung Android. Thu mc tools (cc cng c) Chua ton b cc cng cu dng lnh d xy dung nn cc ung dung Android. Cng cu duoc dng ph bin v huu ch nht l tin ch adb (Android Debug Bridge). usb_driver Thu muc chua cc trnh diu khin cn thit d kt ni mi truong pht trin voi mt thit bi c kha nng chay Android, chng han nhu G1 hay din thoai pht trin d duoc mo kha Android Dev 1. Cc tp tin ny l di hoi duy nht di voi cc nh pht trin dang su dung nn Windows. Cc ung dung Android c th duoc chay trn mt thit bi tht su hoc trn trnh m phong Android (Android Emulator), gui km voi SDK Android. Hnh 3 cho thy mn hnh chu cua trnh m phong Android.
Hnh 3. Trnh m phong Android Page 4 of 11 Nhp mn pht trin ung dung Android
Android Debug Bridge Tin ch adb h tro mt s di s dng lnh ty chon, mang lai cc tnh nng manh m, nhu sao chp tp tin dn v tu thit bi. Di s dng lnh shell cho php ban kt ni voi chnh din thoai v dua ra cc lnh shell th so. Hnh 4 cho thy lnh trnh shell adb di voi mt thit bi thuc duoc kt ni voi mt my tnh xch tay Windows bng mt cp USB.
Hnh 4. Su dng lnh shell adb Page 5 of 11 Nhp mn pht trin ung dung Android
Trong mi truong shell ny, ban c th: Hin thi cu hnh mang cho thy nhiu kt ni mang. Ch cc kt ni mang: lo l kt ni cuc b hoc kt ni vng tro lai. tiwlan0 l kt ni WiFi voi mt dia chi cung cp boi mt my chu DHCP cuc b. Hin thi ni dung cua bin mi truong PATH. Thuc hin lnh su d tro thnh siu nguoi su dung. Chuyn thu muc dn /data/app, noi luu tru cc ung dung cua nguoi su dung. Thuc hin lit k ni dung thu muc, o dy ban s nhn thy chi mt ung dung don le. Cc tp tin ung dung Android thuc t l cc tp tin luu tru c th xem ni dung bng WinZip hoc cng cu tuong duong. Phn mo rng l apk. Pht lnh ping d xem Google.com d sn c chua. Tu cng mt mi truong du nhc lnh ny, ban cung c th tuong tc voi cc co so du liu SQLite, khoi dng chuong trnh, v nhiu nhim vu muc h thng khc. Dy l mt chuc nng kh ni bt, nu luu rng ban d chi kt ni voi mt din thoai. Trong phn tip theo, ban s tao ra mt ung dung don gian Android.
Vit m mt ng dung co bn Phn ny cung cp mt vng tham quan nhanh nhu con lc v cch xy dung mt ung dung Android. Ung dung mu don gian nhu ban c th hnh dung: mt ung dung Hello Android d cai bin. Ban s b sung mt sua di nho d lm cho ton b mu nn cua mn hnh thnh mu trng d ban c th su dung din thoai nhu mt dn pin. Khng tht dc do, nhung n s b ch nhu mt v du. Hy tai v b m ngun dy du. D tao ra mt ung dung trong Eclipse, chon File > New > Android project, n khoi dng thu thut New Android Project (Du n Android moi).
Page 6 of 11 Nhp mn pht trin ung dung Android Hnh 5. Thu thut New Android Project
Tip theo, ban tao ra mt ung dung don gian chi c mt hoat dng don le, cng voi mt bi tr giao din nguoi su dung luu trong main.xml. Bi tr ny chua mt phn tu vn ban m ban sp sua di thnh Android FlashLight (dn pin Android). Bi tr don gian duoc trnh by nhu duoi dy.
Lit k 1. Bi tr Flashlight
Tao mt vi ngun mu sc trong strings.xml.
Lit k 2. Mu sc trong strings.xml
<?xm1 ves1on="1.0" encod1ng="uff-"?> <L1neaLayouf xm1ns:ando1d="hffp://schemas.ando1d.com/apk/es/ando1d" ando1d:o1enfaf1on="vef1ca1" ando1d:1ayoufW1dfh="f111paenf" ando1d:1ayoufhe1ghf="f111paenf" ando1d:backgound="0co1o/a11Wh1fe"> <1exfv1eW ando1d:1ayoufW1dfh="f111paenf" ando1d:1ayoufhe1ghf="Wapconfenf" ando1d:fexf="0sf1ng/he11o" ando1d:fexfCo1o="0co1o/a11b1ack" ando1d:gav1fy="cenfeho1zonfa1"/> </L1neaLayouf> <?xm1 ves1on="1.0" encod1ng="uff-"?> <esouces> <sf1ng name="he11o">Ando1d I1ashL1ghf</sf1ng> <sf1ng name="appname">I1ashL1ghf</sf1ng> <co1o name="a11Wh1fe">#IIIIII</co1o> <co1o name="a11b1ack">#000000</co1o> </esouces> Page 7 of 11 Nhp mn pht trin ung dung Android Bi tr mn hnh chnh c mt mu nn duoc dinh nghia l all_white. Trong tp tin strings.xml, ban thy rng all_white duoc dinh nghia nhu l mt b ba gi tri RGB l #FFFFFF, hay l hon ton mu trng. Bi tr ny chua mt TextView, (khung nhn vn ban) don le, d tht ra chi l mt doan vn ban tinh, khng bin tp duoc. Vn ban ny duoc dt thnh mu den v cn chnh giua theo chiu ngang voi thuc tnh gravity. Ung dung c mt tp tin ngun Java tn l FlashLight.java, nhu chi ra duoi dy.
Lit k 3. Flashlight.java
M ny l mt vn ban thao sn (boiler-plate) truc tip tu thu thut New Project: N l mt phn cua gi Java tn l com.msi.flashlight. N c hai muc nhp khu vo: Mt l cua lop activity (hoat dng) Mt l cua lop bundle (b) Khi hoat dng ny duoc khoi tao, phuong thuc onCreate duoc goi ra, n chuyn giao tham di l mt (b) savedInstanceState. Dung quan tm dn b ny di voi muc dch cua chng ta, n duoc su dung khi mt hoat dng bi treo v sau d tip tuc lai. Phuong thuc onCreate l nap chng d ln phuong thuc cua lop activity c cng tn goi. N goi phuong thuc onCreate cua lop bc trn. Mt lnh goi setContentView() s gn bi tr giao din nguoi su dung d dinh nghia trong tp tin main.xml. Bt cu thu g trong main.xml v strings.xml du duoc tu dng nh xa toi cc hng d dinh nghia trong tp tin ngun R.java. Dung bao gio chinh sua tp tin ny truc tip, v n duoc thay di theo tung ln xy dung. Vic chay ung dung s trnh din mt mn hnh mu trng voi vn ban mu den.
Tp tin ny duoc tao ra mt cch tu dng boi trnh cm thm Android Developer Tools cho Eclipse. Ban khng phai lm g ht. Tt nhin, ung dung ny khng cuc ky tuyt voi. Nhung n c th tin dung nu ban mun doc mt t m khng phin nhiu gic ngu cua vo/chng ban, hoc nu ban cn tm li di dn hp cu ch trong tng hm trong khi mt din.
Tm tt Trong bi ny, ban d tm hiu v Android o muc rt cao v d xy dung nn mt ung dung nho. Hy vong rng v du d lm cho ban c duoc su hung khoi du d khm ph thm nn Android. Android hua hen l mt nn tang m ngun mo lm chuyn dng thi truong m s huu ch ca ngoi pham vi din thoai di dng.
Ti v
Ti nguyn Hc tp Open Handset Alliance (Lin minh Thit bi cm tay mo) l mt tp don 47 cng ty cng ngh v din thoai di dng d tp hop nhau lai d tng tc di moi v din thoai di dng mang lai cho nguoi tiu dng mt trai nghim v din thoai di dng phong ph hon, t tn km hon, v tt hon. Cng voi nhau, ho d pht trin Android, nn di dng hon chinh, mo v min ph du tin.
Android developers site (trang Web cua cc nh pht trin Android) cung cp cc ti liu, phn tai v, blog, v nhiu thu khc nua.
Tm hiu nhiu hon v My ao Dalvik.
Xem cc bi huong dn c trn my chu YouTube bn lun v cc chi tit bn trong cua My ao Dalvik.
Unlocking Android: A Developer's Guide (M kha Android: Mt Hng dn ca Nh Pht trin) cung cp chi dn sc tch, thuc tin v h diu hnh v cc cng cu pht trin Android.
D nghe cc phong vn v thao lun th vi di voi cc nh pht trin phn mm, xem developerWorks podcasts.
Theo st cc bui pht tin trn mang v su kin k thut cua developerWorks.
Theo di developerWorks trn Twitter.
Xem cc hi nghi, trung by thuong mai, cc bui pht tin trn mang, v Events cc su kin khc trn khp th gioi sp din ra m cc nh pht trin m ngun mo cua IBM quan tm dn.
</acf1v1fy> </app11caf1on> </man1fesf> M ta Tn Kch thuc Phuong thc tai FlashLight source code os-android-devel-FlashLight.zip 22KB HTTP Thng tin v phuong thuc tai Page 10 of 11 Nhp mn pht trin ung dung Android Truy cp vo vng m ngun mo trn developerWorks d c cc thng tin huong dn cch lm, cc cng cu, v cc du n cp nht d gip ban pht trin voi cc cng ngh m ngun mo v su dung chng voi cc san phm cua IBM.
Theo di v tm hiu v IBM v cc cng ngh m ngun mo v cc chuc nng cua san phm bng cc trnh din min ph theo yu cu trn developerWorks (developerWorks On demand demos).
Ly san phm v cng ngh Tai v Android SDK.
Nhn ban Eclipse IDE moi nht.
Di moi du n pht trin m ngun mo tip theo cua ban bng phn mm dng thu cua IBM (IBM trial software), sn c d tai v hoc trn dia DVD.
Tai v cc phin ban dnh gi san phm cua IBM (IBM product evaluation versions) hoc khm ph dng thu truc tuyn trong SOA Sandbox cua IBM v hy bt tay vo cc cng cu pht trin ung dung v cc san phm phn mm tng giua tu DB2, Lotus, Rational, Tivoli, v WebSphere.
Thao lun Tham gia vo cc blog cua developerWorks v gia nhp cng dng developerWorks.
i nt v tc gi
Sau khi su nghip trong di bng r cua truong cao dng kt thc m khng c mt hop dng di han nhiu nm choi cho di LA Lakers, Frank Ableson d chuyn ch huong cua mnh sang thit k phn mm my tnh. ng thch giai quyt cc vn d phuc tap, nht l trong cc linh vuc truyn thng v lp giao din phn cung. Khi khng lm vic, ng dnh thoi gian voi nguoi vo Nikki v con ci. Ban c th gp Frank tai dia chi frank@cfgsolutions.com. Page 11 of 11 Nhp mn pht trin ung dung Android