You are on page 1of 11

Nhp mn pht trin ng dung Android

Nn vqt dng m ngun m


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.

Hnh 6. Mn hnh trng cua flashlight
package com.ms1.f1ash11ghf
1mpof ando1d.app.Acf1v1fy
1mpof ando1d.os.8und1e
pub11c c1ass I1ashL1ghf exfends Acf1v1fy {
/"" Ca11ed When fhe acf1v1fy 1s f1sf ceafed. "/
pub11c vo1d onCeafe{8und1e savedlnsfance5fafe} {
supe.onCeafe{savedlnsfance5fafe}
sefConfenfv1eW{k.1ayouf.ma1n}
}
}
Page 8 of 11 Nhp mn pht trin ung dung Android


Thit lp tp tin AndroidManifest.xml dnh cho ung dung FlashLight trnh by duoi dy.

Lit k 4. AndroidManifest.xml dng cho FlashLight
<?xm1 ves1on="1.0" encod1ng="uff-"?>
<man1fesf xm1ns:ando1d="hffp://schemas.ando1d.com/apk/es/ando1d"
package="com.ms1.f1ash11ghf"
ando1d:ves1onCode="1"
ando1d:ves1onName="1.0.0">
<app11caf1on ando1d:1con="0daWab1e/1con" ando1d:1abe1="0sf1ng/appname">
<acf1v1fy ando1d:name=".I1ashL1ghf"
ando1d:1abe1="0sf1ng/appname">
<1nfenf-f11fe>
<acf1on ando1d:name="ando1d.1nfenf.acf1on.MAlN" />
<cafegoy ando1d:name="ando1d.1nfenf.cafegoy.LAuNChLk" />
</1nfenf-f11fe>
Page 9 of 11 Nhp mn pht trin ung dung Android

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

You might also like