Nhp môn phát trin ng dng Android
Mc : Nhp môn
Frank Ableson, Software designer
22 01 2011
Android là mt môi trng h iu hành hoàn chnh da trên h iu hành nhân Linux® V2.6. Lúc u,
ích trin khai i vi Android là lnh vc in thoi di ng, gm các loi in thoi thông minh và các
loi thit b in thoi kiu gp chi phí thp. Tuy nhiên, phm vi y các dch v in toán ca
Android và s h tr chc nng phong phú ca nó có tim nng m rng vt ra ngoài th trng in
thoi di ng. Android có th hu ích i vi các nn tng và ng dng khác. Trong bài vit này, bn s
c gii thiu v nn Android và hc cách vit mã mt ng dng Android c bn.
Gii thiu
BlackBerry và iPhone, vi các nn di ng dung lng cao và hp d n, ang nh!m n hai u ngc chiu nhau ca
ph" các in thoi di ng. BlackBerry vng ch!c nh á i vi nhng ngi s# dng mc nghip v chuyên nghi
p.
$ làm mt thit b tiêu dùng, nó khó cnh tranh c vi iPhone v tính d% s# dng và “yu t tuyt tác” (cool
factor). Android, mt nn tng v n còn tr& và cha c kim chng, có tim nng óng vai trò c hai u ca ph"
các in thoi di ng và thm chí có th làm cu ni qua h sâu ngn cách gia làm vic và vui chi.
Ngày nay, có nhi
u thit b da trên mng hay có kh nng ni mng chy mt bin thái h iu hành nhân Linux. $ó
là mt nn vng ch!c: có hiu qu v chi phí khi trin khai và h tr, và s'n sàng c chp nhn nh là mt cách tip
cn thit k tt trin khai. Giao din ngi s# dng dành cho các thit b nh vy thng da trên HTML và có th
xem c b(ng mt trình duyt cho PC hay Mac. Nhng không phi vt dng nào c)ng cn iu khin b(ng mt thit
b tính toán chung. Hãy xem xét mt vt dng thông thng, ch*ng hn nh mt lò nng, lò vi sóng ho+c làm
bánh mì. $iu gì xy ra nu các vt dng gia ình ca bn c Android iu khin và hãnh din khoe ra mt màn
hình màu cm ng? Vi mt giao din ngi s# dng Android trên m+t lò, tác gi thm chí có th nu nng m
t món
gì ó.
Trong bài này, chúng ta hãy tìm hiu v nn Android và cách có th s# dng nó nh th nào cho các ng dng di ng
và không phi di ng. Hãy cài +t B công c phát trin phn mm Android (Android SDK) và xây dng mt ng
dng n gin. Hãy Ti v mã ngun ca ng dng m u trong bài vit này.
Lc s v Android
N
n Android là sn ph,m ca Open Handset Alliance (Liên minh thit b cm tay m), mt tp oàn các t" chc cùng
hp tác vi nhau xây dng nên mt loi in thoi di ng tt hn. Tp oàn do Google ng u này gm các nhà
vn hành (in thoi) di ng, các nhà sn xut thit b cm tay, sn xut linh kin, các nhà cung cp nn và gii pháp
phn mm, và các công ty tip th. T- mt quan im phát trin phn mm, Android n(m chính gia th gii mã ngu
n
m.
Thit b cm tay có kh nng Android u tiên trên th trng là thit b G1 do HTC sn xut và c bán trên T-
Mobile. Nó tr nên s'n có sau gn mt nm n i, khi mà các công c phát trin phn mm s'n có duy nht ch là
mt s bn phát hành B công c phát trin phn mm (SDK) c ci tin dn t-ng bc. Khi ngày phát hành G1
gn n, nhóm Android ã phát hành SDK V1.0 và các ng dng b!t u vt lên nh(m ti nn tng mi này.
$ kích thích "i mi, Google ã tài tr hai vòng cuc thi "Các Thách thc Nhà Phát trin Android," ni mà hàng
triu ô la c " vào các ng dng d thi hàng u. Vài tháng sau G1, Android Market c phát hành, cho phép
ngi s# dng duyt và ti v các ng dng trc tip vào in thoi ca h. Trong khong 18 tháng, mt nn di ng
mi ã bc lên v) ài công khai.
Page
1
of
11
Nh
p môn phát tri
n
ng d
ng Android
Nn tng Android
Vi kh nng rng rãi ca Android, s rt d% dàng nhm l n nó vi mt h iu hành máy tính bàn. Android là mt
môi trng phân tng, xây dng trên nn ca h iu hành nhân Linux, và nó bao hàm nhiu chc nng phong phú. H
thng con giao din ngi s# dng gm có:
C#./0"
Khung nhìn
Các tiu trình hin th các ph,n t# ph" bin nh các hp biên son, danh sách, danh sách th xung
Android gm mt trình duyt có th nhúng vào c, c xây dng da trên WebKit, chính là máy (engine) trình
duyt mã ngun m c)ng ang là ng c ca trình duyt Safari di ng ca iPhone.
Android khoe ra mt mng di dào nhiu tùy chn kt ni, gm WiFi, Bluetooth, và d liu không dây qua mt kt n
i
di ng (nh GPRS, EDGE, và 3G). Mt k1 thut ph" bin trong các ng dng Android là liên kt ti Google Maps
hin th mt a ch trc tip trong mt ng dng. Vic h tr cho các dch v da trên a im (ch*ng hn nh GPS)
và các dng c o gia tc c)ng có s'n trong chng phn mm Android, m+c dù không phi tt c các thit b Android
c trang b vi các phn cng cn thit. C)ng có c h tr máy nh (camera) na.
V m+t lch s#, có hai lnh vc mà các ng dng di ng ã g!ng sc theo kp các i tác máy tính bàn là ha/
a
phng tin, và phng thc lu tr d liu. Android gii quyt thách thc v ha b(ng s h tr dng s'n cho
ha 2-D và 3-D, gm c th vin OpenGL. Gánh n+ng lu tr d liu c gim nh2 vì nn Android có gm c c s
d liu SQLite mã ngun m ph" bin. Hình 1 cho thy mt khung nhìn n gin hoá v các tng phn mm Android.
Hình 1. Các tng phn mm Android
Kin trúc ng dng
Nh
ã cp, Android chy bên trên mt h iu hành nhân Linux. Các ng dng Android c vit b(ng ngôn ng
lp trình Java, và chúng chy trong mt máy o (VM). $iu quan trng là phi lu ý r(ng VM không phi là mt máy
Page
2
of
11
Nh
p môn phát tri
n
ng d
ng Android
o Java (JVM) nh bn ch i, mà là máy o Dalvik (Dalvik Virtual Machine), mt công ngh mã ngun m. Mi
ng dng Android chy trong mt cá th ca máy o Dalvik, n lt mình, cá th máy o này n(m trong mt tin
trình do nhân Linux qun lý, nh trình bày di ây.
Hình 2. Máy o Dalvik
Mt ng dng Android gm có mt ho+c nhiu phân loi sau ây:
Hot ng
Mt ng dng có mt giao din ngi dùng nhìn thy c, s c thc hin b(ng mt hot ng. Khi ngi
s# dng chn mt ng dng t- màn hình ch ho+c trình khi chy ng dng, mt hot ng c khi ng.
Mt dch v nên c s# dng i vi bt k3 ng dng nào cn tn ti trong mt thi gian dài, ch*ng hn nh
mt trình giám sát mng ho+c ng dng kim tra-cp nht.
Trình cung cp ni dung
Bn có th coi các trình cung cp ni dung nh là mt máy ch c s d liu. Công vic ca mt trình cung cp
ni dung là qun lý truy cp vào d liu ang tn ti, ch*ng hn nh mt c s d liu SQLite. Nu ng dng
ca bn rt n gin thì bn không nht thit phi to ra mt trình cung cp ni dung. Nu bn ang xây dng
mt ng dng ln hn, ho+c mt ng dng cung cp d liu s'n sàng cho nhiu hot ng ho+c ng dng
khác, mt trình cung cp ni dung là phng tin truy cp d liu ca bn.
Trình thu sóng phát
Mt ng dng Android có th c khi chy x# lý mt phn t# d liu ho+c áp ng mt s kin, ch*ng
hn nh nhn mt vn bn thông báo.
Mt ng dng Android, cùng vi mt tp tin tên là AndroidManifest.xml, c trin khai lên mt thit b.
AndroidManifest.xml cha các thông tin cu hình cn thit cài +t nó úng !n vào thit b. Nó gm các tên lp c
n
thit và các kiu s kin mà ng dng có th x# lý, và các quyn hn ng dng cn có chy. Thí d, nu mt ng
dng òi h4i vic truy cp vào mng — ti v mt tp tin ch*ng hn — thì quyn hn này phi c tuyên b mt
cách tng minh trong tp tin manifest. Nhiu ng dng có th có các quyn hn riêng này c kích hot. $m bo
an ninh b(ng khai báo nh vy giúp gim bt kh nng xy ra là mt ng dng xu có th làm thit hi thit b ca
bn.
Phn tip theo bàn lun v môi trng phát trin cn có xây dng nên mt ng dng Android.
Các công c òi hi phi có
Cách d% nht b!t u phát trin các ng dng Android là ti v B công c phát trin phn mm Android và Môi
Page
3
of
11
Nh
p môn phát tri
n
ng d
ng Android
trng phát trin tích hp Eclipse (Eclipse IDE) (xem phn Tài nguyên). Vic phát trin Android có th di%n ra trên
Microsoft® Windows®, Mac OS X, ho+c Linux.
Bài vit này gi thit r(ng bn ang s# dng Môi trng phát trin tích hp Eclipse và trình c!m thêm Android
Developer Tools dùng cho Eclipse. Các ng dng Android c vit b(ng ngôn ng Java, nhng biên dch và thi hành
b(ng máy o Dalvik (mt máy o không phi Java). Vit mã b(ng ngôn ng Java trong Eclipse là rt trc quan;
Eclipse cung cp mt môi trng Java phong phú, gm c vic tr giúp theo ng cnh và các mách nc gi ý v mã.
Khi b mã Java ca bn c biên dch sch s, Android Developer Tools s m bo r(ng ng dng ó c gói
úng !n, gm c tp tin AndroidManifest.xml.
Có th phát trin các ng dng Android mà không cn Eclipse và và trình c!m thêm Android Developer Tools, nhng
bn s cn phi bit cách s# dng B công c phát trin phn mm Android.
B công c phát trin phn mm Android c phân phi di dng mt tp tin nén ZIP và gii nén vào mt th mc
trên " a ca bn. Do có mt vài cp nht B công c phát trin phn mm (SDK), bn nên gi cho môi trng phát
trin ca bn có t" chc tt bn có th d% dàng chuyn "i gia các bn cài +t SDK. SDK gm có:
android.jar
Tp tin lu tr Java cha toàn b các lp SDK Android cn thit xây dng ng dng ca bn.
documention.html và th mc docs
Tài liu SDK c cung cp ti ch và trên Web. Ch yu nó dng JavaDocs, to iu kin d% dàng cho vic
d n hng trong nhiu gói trong SDK. Tài liu c)ng gm c mt Hng d n Phát trin mc cao và các liên kt
n cng ng Android rng rãi hn.
Th mc samples (các ví d mu)
Th mc con samples cha b mã ngun y dùng cho mt lot các ng dng, gm c ApiDemo, nó s#
dng nhiu API. 5ng dng m u là mt ni khám phá tuyt vi khi b!t u phát trin ng dng Android.
Th mc tools (các công c)
Cha toàn b các công c dòng lnh xây dng nên các ng dng Android. Công c c dùng ph" bin và
hu ích nht là tin ích
adb
(Android Debug Bridge).
usb_driver
Th mc cha các trình iu khin cn thit kt ni môi trng phát trin vi mt thit b có kh nng chy
Android, ch*ng hn nh G1 hay in thoi phát trin ã c m khóa Android Dev 1. Các tp tin này là òi
h4i duy nht i vi các nhà phát trin ang s# dng nn Windows.
Các ng dng Android có th c chy trên mt thit b tht s ho+c trên trình mô ph4ng Android (Android
Emulator), g#i kèm vi SDK Android. Hình 3 cho thy màn hình ch ca trình mô ph4ng Android.
Hình 3. Trình mô phng Android
Page
4
of
11
Nh
p môn phát tri
n
ng d
ng Android
Android Debug Bridge
Tin ích
adb
h tr mt s i s dòng lnh tùy chn, mang li các tính nng mnh m, nh sao chép tp tin n và t-
thit b. $i s dòng lnh shell cho phép bn kt ni vi chính in thoi và a ra các lnh shell thô s. Hình 4 cho
thy lnh trình shell
adb
i vi mt thit b thc c kt ni vi mt máy tính xách tay Windows b(ng mt cáp
USB.
Hình 4. S dng lnh shell
adb
Page
5
of
11
Nh
p môn phát tri
n
ng d
ng Android
Trong môi trng shell này, bn có th:
Hin th cu hình mng cho thy nhiu kt ni mng. Chú ý các kt ni mng:
lo
là kt ni cc b ho+c kt ni vòng tr li.
tiwlan0
là kt ni WiFi vi mt a ch cung cp bi mt máy ch DHCP cc b.
Hin th ni dung ca bin môi trng
PATH
.
Thc hin lnh
su
tr thành siêu ngi s# dng.
Chuyn th mc n /data/app, ni lu tr các ng dng ca ngi s# dng.
Thc hin lit kê ni dung th mc, ây bn s nhìn thy ch mt ng dng n l&. Các tp tin ng dng
Android thc t là các tp tin lu tr có th xem ni dung b(ng WinZip ho+c công c tng ng. Phn m
rng là apk.
Phát lnh ping xem Google.com ã s'n có cha.
T- cùng mt môi trng du nh!c lnh này, bn c)ng có th tng tác vi các c s d liu SQLite, khi ng
chng trình, và nhiu nhim v mc h thng khác. $ây là mt chc nng khá n"i bt, nu lu ý r(ng bn ã ch kt
ni vi mt in thoi.
Trong phn tip theo, bn s to ra mt ng dng n gin Android.
Vi
t mã mt ng dng c bn
Phn này cung cp mt vòng tham quan nhanh nh cn lc v cách xây dng mt ng dng Android. 5ng dng m u
n gin nh bn có th hình dung: mt ng dng “Hello Android” ã ci biên. Bn s b" sung mt s#a "i nh4
làm cho toàn b màu nn ca màn hình thành màu tr!ng bn có th s# dng in thoi nh mt èn pin. Không tht
c áo, nhng nó s b" ích nh mt ví d. Hãy ti v b mã ngun y .
$ to ra mt ng dng trong Eclipse, chn
File > New > Android project
, nó khi ng th thut New Android
Project (D án Android mi).
Page
6
of
11
Nh
p môn phát tri
n
ng d
ng Android
Hình 5. Th thut New Android Project
Tip theo, bn to ra mt ng dng n gin ch có mt hot ng n l&, cùng vi mt bài trí giao din ngi s# d
ng
lu trong main.xml. Bài trí này cha mt ph,n t# vn bn mà bn s!p s#a "i thành Android FlashLight (èn pin
Android). Bài trí n gin c trình bày nh di ây.
Lit kê 1. Bài trí Flashlight
To mt vài ngun màu s!c trong strings.xml.
Lit kê 2. Màu sc trong strings.xml
!"" "!#""
$% $!
$ $!
&#'"$%
()%
$% $!
$ %!$
'" *'"$&#
$ +"
"
,- "
!!$- "
$% "
$&#."
"
Page
7
of
11
Nh
p môn phát tri
n
ng d
ng Android
Bài trí màn hình chính có mt màu nn c nh ngha là
all_white
. Trong tp tin strings.xml, bn thy r(ng
all_white
c nh ngha nh là mt b ba giá tr RGB là #FFFFFF, hay là hoàn toàn màu tr!ng.
Bài trí này cha mt
TextView
, (khung nhìn vn bn) n l&, ó tht ra ch là mt on vn bn tnh, không biên tp
c. Vn bn này c +t thành màu en và cn chính gia theo chiu ngang vi thuc tính
gravity
.
5ng dng có mt tp tin ngun Java tên là FlashLight.java, nh ch ra di ây.
Lit kê 3. Flashlight.java
Mã này là mt vn bn tho s'n (boiler-plate) trc tip t- th thut New Project:
Nó là mt phn ca gói Java tên là com.msi.flashlight.
Nó có hai mc nhp kh,u vào:
Mt là ca lp activity (hot ng)
Mt là ca lp bundle (bó)
Khi hot ng này c khi to, phng thc
onCreate
c gi ra, nó chuyn giao tham i là mt (bó)
savedInstanceState
. $-ng quan tâm n bó này i vi mc ích ca chúng ta, nó c s# dng khi
mt hot ng b treo và sau ó tip tc li.
Phng thc
onCreate
là np chng è lên phng thc ca lp activity có cùng tên gi. Nó gi phng thc
onCreate
ca lp bc trên.
Mt lnh gi
setContentView()
s g!n bài trí giao din ngi s# dng ã nh ngha trong tp tin
main.xml. Bt c th gì trong main.xml và strings.xml u c t ng ánh x ti các h(ng ã nh ngha
trong tp tin ngun R.java. $-ng bao gi chnh s#a tp tin này trc tip, vì nó c thay "i theo t-ng ln xây
dng.
Vic chy ng dng s trình di%n mt màn hình màu tr!ng vi vn bn màu en.
Hình 6. Màn hình trng ca flashlight
!# /
!!!,/
!0/
!&- ,1
"22*% 2"
!&*304561
!*3456/
*)%376/
8
8
Page
8
of
11
Nh
p môn phát tri
n
ng d
ng Android
Thit lp tp tin AndroidManifest.xml dành cho ng dng FlashLight trình bày di ây.
Lit kê 4. AndroidManifest.xml dùng cho FlashLight
!"" "!#""
!#
*
9
!!'%&"&'"!!$
-
&'"!!$
:,49"
,;9*<=7"
"
Page
9
of
11
Nh
p môn phát tri
n
ng d
ng Android
Tp tin này c to ra mt cách t ng bi trình c!m thêm Android Developer Tools cho Eclipse. Bn không phi
làm gì ht.
Tt nhiên, ng dng này không cc k3 tuyt vi. Nhng nó có th tin dng nu bn mun c mt ít mà không phin
nhi%u gic ng ca v/chng bn, ho+c nu bn cn tìm li i n hp cu chì trong tng hm trong khi mt in.
Tóm tt
Trong bài này, bn ã tìm hiu v Android mc rt cao và ã xây dng nên mt ng dng nh4. Hy vng r(ng ví d
ã làm cho bn có c s hng khi khám phá thêm nn Android. Android ha h2n là mt nn tng mã ngun
m làm chuyn ng th trng mà s hu ích c ngoài phm vi in thoi di ng.
Ti v
Tài nguyên
Hc tp
Open Handset Alliance (Liên minh Thit b cm tay m) là mt tp oàn 47 công ty công ngh và in thoi di
ng ã tp hp nhau li tng tc "i mi v in thoi di ng mang li cho ngi tiêu dùng mt tri
nghim v in thoi di ng phong phú hn, ít tn kém hn, và tt hn. Cùng vi nhau, h ã phát trin
Android, nn di ng hoàn chnh, m và mi%n phí u tiên.
Android developers site (trang Web ca các nhà phát trin Android) cung cp các tài liu, phn ti v, blog, và
nhiu th khác na.
Tìm hiu nhiu hn v Máy o Dalvik.
Xem các bài hng d n có trên máy ch YouTube bàn lun v các chi tit bên trong ca Máy o Dalvik.
Unlocking Android: A Developer's Guide (M khóa Android: Mt Hng dn ca Nhà Phát trin) cung cp ch
d n súc tích, thc ti%n v h iu hành và các công c phát trin Android.
$ nghe các ph4ng vn và tho lun thú v i vi các nhà phát trin phn mm, xem developerWorks podcasts.
Theo sát các bu"i phát tin trên mng và s kin k1 thut ca developerWorks.
Theo dõi developerWorks trên Twitter.
Xem các hi ngh, trng bày thng mi, các bu"i phát tin trên mng, và Events các s kin khác trên kh!p th
gii s!p di%n ra mà các nhà phát trin mã ngun m ca IBM quan tâm n.
"
"!!
"
Mô t Tên Kích thc Phng thc ti
FlashLight source code os-android-devel-FlashLight.zip 22KB
HTTP
Thông tin v
ph
ng th
c t
i
Page
10
of
11
Nh
p môn phát tri
n
ng d
ng Android
Truy cp vào vùng mã ngun m trên developerWorks có các thông tin hng d n cách làm, các công c,
và
các d án cp nht giúp bn phát trin vi các công ngh mã ngun m và s# dng chúng vi các sn ph,m
ca IBM.
Theo dõi và tìm hiu v IBM và các công ngh mã ngun m và các chc nng ca sn ph,m b(ng các trình
di%n mi%n phí theo yêu cu trên developerWorks (developerWorks On demand demos).
Ly sn phm và công ngh
Ti v Android SDK.
Nhn bn Eclipse IDE mi nht.
$"i mi d án phát trin mã ngun m tip theo ca bn b(ng phn mm dùng th# ca IBM (IBM trial
software), s'n có ti v ho+c trên a DVD.
Ti v các phiên bn ánh giá sn ph,m ca IBM (IBM product evaluation versions) ho+c khám phá dùng th#
trc tuyn trong SOA Sandbox ca IBM và hãy b!t tay vào các công c phát trin ng dng và các sn ph,m
phn mm tng gia t- DB2®, Lotus®, Rational®, Tivoli®, và WebSphere®.
Tho lun
Tham gia vào các blog ca developerWorks và gia nhp cng ng developerWorks.
ôi nét v tác gi
Sau khi s nghip trong i bóng r" ca trng cao *ng kt thúc mà không có mt hp ng dài hn nhiu nm chi
cho i LA Lakers, Frank Ableson ã chuyn chí hng ca mình sang thit k phn mm máy tính. Ông thích gii
quyt các vn phc tp, nht là trong các lnh vc truyn thông và lp giao din phn cng. Khi không làm vic,
ông dành thi gian vi ngi v Nikki và con cái. Bn có th g+p Frank ti a ch
Page
11
of
11
Nh
p môn phát tri
n
ng d
ng Android