Tải bản đầy đủ (.pdf) (11 trang)

nhập môn phát triển ứng dụng trên android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (427.3 KB, 11 trang )



Nhp môn phát trin ng dng Android

Mc : Nhp môn
Frank Ableson, Software designer
22 01 2011
Android là mt môi trng h iu hành hoàn chnh da trên h iu hành nhân Linux® V2.6. Lúc u,
ích trin khai i vi Android là lnh vc in thoi di ng, gm các loi in thoi thông minh và các
loi thit b in thoi kiu gp chi phí thp. Tuy nhiên, phm vi y  các dch v in toán ca
Android và s h tr chc nng phong phú ca nó có tim nng m rng vt ra ngoài th trng in
thoi di ng. Android có th hu ích i vi các nn tng và ng dng khác. Trong bài vit này, bn s
c gii thiu v nn Android và hc cách vit mã mt ng dng Android c bn.
Gii thiu

BlackBerry và iPhone, vi các nn di ng dung lng cao và hp d n, ang nh!m n hai u ngc chiu nhau ca
ph" các in thoi di ng. BlackBerry vng ch!c nh á i vi nhng ngi s# dng mc nghip v chuyên nghi
p.
$ làm mt thit b tiêu dùng, nó khó cnh tranh c vi iPhone v tính d% s# dng và “yu t tuyt tác” (cool
factor). Android, mt nn tng v n còn tr& và cha c kim chng, có tim nng óng vai trò  c hai u ca ph"
các in thoi di ng và thm chí có th làm cu ni qua h sâu ngn cách gia làm vic và vui chi.
Ngày nay, có nhi
u thit b da trên mng hay có kh nng ni mng chy mt bin thái h iu hành nhân Linux. $ó
là mt nn vng ch!c: có hiu qu v chi phí khi trin khai và h tr, và s'n sàng c chp nhn nh là mt cách tip
cn thit k tt  trin khai. Giao din ngi s# dng dành cho các thit b nh vy thng da trên HTML và có th
xem c b(ng mt trình duyt cho PC hay Mac. Nhng không phi vt dng nào c)ng cn iu khin b(ng mt thit
b tính toán chung. Hãy xem xét mt vt dng thông thng, ch*ng hn nh mt lò nng, lò vi sóng ho+c  làm
bánh mì. $iu gì xy ra nu các vt dng gia ình ca bn c Android iu khin và hãnh din khoe ra mt màn
hình màu cm ng? Vi mt giao din ngi s# dng Android trên m+t lò, tác gi thm chí có th nu nng m
t món
gì ó.


Trong bài này, chúng ta hãy tìm hiu v nn Android và cách có th s# dng nó nh th nào cho các ng dng di ng
và không phi di ng. Hãy cài +t B công c phát trin phn mm Android (Android SDK) và xây dng mt ng
dng n gin. Hãy Ti v mã ngun ca ng dng m u trong bài vit này.



Lc s v Android

N
n Android là sn ph,m ca Open Handset Alliance (Liên minh thit b cm tay m), mt tp oàn các t" chc cùng
hp tác vi nhau  xây dng nên mt loi in thoi di ng tt hn. Tp oàn do Google ng u này gm các nhà
vn hành (in thoi) di ng, các nhà sn xut thit b cm tay, sn xut linh kin, các nhà cung cp nn và gii pháp
phn mm, và các công ty tip th. T- mt quan im phát trin phn mm, Android n(m chính gia th gii mã ngu
n
m.
Thit b cm tay có kh nng Android u tiên trên th trng là thit b G1 do HTC sn xut và c bán trên T-
Mobile. Nó tr nên s'n có sau gn mt nm n i, khi mà các công c phát trin phn mm s'n có duy nht ch là
mt s bn phát hành B công c phát trin phn mm (SDK) c ci tin dn t-ng bc. Khi ngày phát hành G1
gn n, nhóm Android ã phát hành SDK V1.0 và các ng dng b!t u vt lên nh(m ti nn tng mi này.
$ kích thích "i mi, Google ã tài tr hai vòng cuc thi "Các Thách thc Nhà Phát trin Android," ni mà hàng
triu ô la c " vào các ng dng d thi hàng u. Vài tháng sau G1, Android Market c phát hành, cho phép
ngi s# dng duyt và ti v các ng dng trc tip vào in thoi ca h. Trong khong 18 tháng, mt nn di ng
mi ã bc lên v) ài công khai.
Page
1
of
11
Nh

p môn phát tri


n

ng d

ng Android



Nn tng Android

Vi kh nng rng rãi ca Android, s rt d% dàng nhm l n nó vi mt h iu hành máy tính  bàn. Android là mt
môi trng phân tng, xây dng trên nn ca h iu hành nhân Linux, và nó bao hàm nhiu chc nng phong phú. H

thng con giao din ngi s# dng gm có:

C#./0"

Khung nhìn

Các tiu trình  hin th các ph,n t# ph" bin nh các hp biên son, danh sách, danh sách th xung
Android gm mt trình duyt có th nhúng vào c, c xây dng da trên WebKit, chính là máy (engine) trình
duyt mã ngun m c)ng ang là ng c ca trình duyt Safari di ng ca iPhone.
Android khoe ra mt mng di dào nhiu tùy chn kt ni, gm WiFi, Bluetooth, và d liu không dây qua mt kt n
i
di ng (nh GPRS, EDGE, và 3G). Mt k1 thut ph" bin trong các ng dng Android là liên kt ti Google Maps

hin th mt a ch trc tip trong mt ng dng. Vic h tr cho các dch v da trên a im (ch*ng hn nh GPS)
và các dng c o gia tc c)ng có s'n trong chng phn mm Android, m+c dù không phi tt c các thit b Android
c trang b vi các phn cng cn thit. C)ng có c h tr máy nh (camera) na.

V m+t lch s#, có hai lnh vc mà các ng dng di ng ã g!ng sc theo kp các i tác máy tính  bàn là  ha/
a
phng tin, và phng thc lu tr d liu. Android gii quyt thách thc v  ha b(ng s h tr dng s'n cho 
ha 2-D và 3-D, gm c th vin OpenGL. Gánh n+ng lu tr d liu c gim nh2 vì nn Android có gm c c s
d liu SQLite mã ngun m ph" bin. Hình 1 cho thy mt khung nhìn n gin hoá v các tng phn mm Android.

Hình 1. Các tng phn mm Android






Kin trúc ng dng

Nh
 ã  cp, Android chy bên trên mt h iu hành nhân Linux. Các ng dng Android c vit b(ng ngôn ng
lp trình Java, và chúng chy trong mt máy o (VM). $iu quan trng là phi lu ý r(ng VM không phi là mt máy
Page
2
of
11
Nh

p môn phát tri

n

ng d


ng Android
o Java (JVM) nh bn ch i, mà là máy o Dalvik (Dalvik Virtual Machine), mt công ngh mã ngun m. Mi
ng dng Android chy trong mt cá th ca máy o Dalvik, n lt mình, cá th máy o này n(m trong mt tin
trình do nhân Linux qun lý, nh trình bày di ây.

Hình 2. Máy o Dalvik



Mt ng dng Android gm có mt ho+c nhiu phân loi sau ây:
Hot ng

Mt ng dng có mt giao din ngi dùng nhìn thy c, s c thc hin b(ng mt hot ng. Khi ngi
s# dng chn mt ng dng t- màn hình ch ho+c trình khi chy ng dng, mt hot ng c khi ng.


Mt dch v nên c s# dng i vi bt k3 ng dng nào cn tn ti trong mt thi gian dài, ch*ng hn nh
mt trình giám sát mng ho+c ng dng kim tra-cp nht.
Trình cung cp ni dung

Bn có th coi các trình cung cp ni dung nh là mt máy ch c s d liu. Công vic ca mt trình cung cp
ni dung là qun lý truy cp vào d liu ang tn ti, ch*ng hn nh mt c s d liu SQLite. Nu ng dng
ca bn rt n gin thì bn không nht thit phi to ra mt trình cung cp ni dung. Nu bn ang xây dng
mt ng dng ln hn, ho+c mt ng dng  cung cp d liu s'n sàng cho nhiu hot ng ho+c ng dng
khác, mt trình cung cp ni dung là phng tin truy cp d liu ca bn.
Trình thu sóng phát

Mt ng dng Android có th c khi chy  x# lý mt phn t# d liu ho+c áp ng mt s kin, ch*ng
hn nh nhn mt vn bn thông báo.
Mt ng dng Android, cùng vi mt tp tin tên là AndroidManifest.xml, c trin khai lên mt thit b.

AndroidManifest.xml cha các thông tin cu hình cn thit  cài +t nó úng !n vào thit b. Nó gm các tên lp c
n
thit và các kiu s kin mà ng dng có th x# lý, và các quyn hn ng dng cn có  chy. Thí d, nu mt ng
dng òi h4i vic truy cp vào mng —  ti v mt tp tin ch*ng hn — thì quyn hn này phi c tuyên b mt
cách tng minh trong tp tin manifest. Nhiu ng dng có th có các quyn hn riêng này c kích hot. $m bo
an ninh b(ng khai báo nh vy giúp gim bt kh nng xy ra là mt ng dng xu có th làm thit hi thit b ca
bn.
Phn tip theo bàn lun v môi trng phát trin cn có  xây dng nên mt ng dng Android.



Các công c òi hi phi có

Cách d% nht  b!t u phát trin các ng dng Android là ti v B công c phát trin phn mm Android và Môi
Page
3
of
11
Nh

p môn phát tri

n

ng d

ng Android
trng phát trin tích hp Eclipse (Eclipse IDE) (xem phn Tài nguyên). Vic phát trin Android có th di%n ra trên
Microsoft® Windows®, Mac OS X, ho+c Linux.
Bài vit này gi thit r(ng bn ang s# dng Môi trng phát trin tích hp Eclipse và trình c!m thêm Android

Developer Tools dùng cho Eclipse. Các ng dng Android c vit b(ng ngôn ng Java, nhng biên dch và thi hành
b(ng máy o Dalvik (mt máy o không phi Java). Vit mã b(ng ngôn ng Java trong Eclipse là rt trc quan;
Eclipse cung cp mt môi trng Java phong phú, gm c vic tr giúp theo ng cnh và các mách nc gi ý v mã.
Khi b mã Java ca bn c biên dch sch s, Android Developer Tools s m bo r(ng ng dng ó c gói
úng !n, gm c tp tin AndroidManifest.xml.
Có th phát trin các ng dng Android mà không cn Eclipse và và trình c!m thêm Android Developer Tools, nhng
bn s cn phi bit cách s# dng B công c phát trin phn mm Android.
B công c phát trin phn mm Android c phân phi di dng mt tp tin nén ZIP và gii nén vào mt th mc
trên " a ca bn. Do có mt vài cp nht B công c phát trin phn mm (SDK), bn nên gi cho môi trng phát
trin ca bn có t" chc tt  bn có th d% dàng chuyn "i gia các bn cài +t SDK. SDK gm có:
android.jar

Tp tin lu tr Java cha toàn b các lp SDK Android cn thit  xây dng ng dng ca bn.
documention.html và th mc docs

Tài liu SDK c cung cp ti ch và trên Web. Ch yu nó  dng JavaDocs, to iu kin d% dàng cho vic
d n hng trong nhiu gói trong SDK. Tài liu c)ng gm c mt Hng d n Phát trin mc cao và các liên kt
n cng ng Android rng rãi hn.
Th mc samples (các ví d mu)

Th mc con samples cha b mã ngun y  dùng cho mt lot các ng dng, gm c ApiDemo, nó s#
dng nhiu API. 5ng dng m u là mt ni khám phá tuyt vi khi b!t u phát trin ng dng Android.
Th mc tools (các công c)

Cha toàn b các công c dòng lnh  xây dng nên các ng dng Android. Công c c dùng ph" bin và
hu ích nht là tin ích
adb
(Android Debug Bridge).
usb_driver


Th mc cha các trình iu khin cn thit  kt ni môi trng phát trin vi mt thit b có kh nng chy
Android, ch*ng hn nh G1 hay in thoi phát trin ã c m khóa Android Dev 1. Các tp tin này là òi
h4i duy nht i vi các nhà phát trin ang s# dng nn Windows.
Các ng dng Android có th c chy trên mt thit b tht s ho+c trên trình mô ph4ng Android (Android
Emulator), g#i kèm vi SDK Android. Hình 3 cho thy màn hình ch ca trình mô ph4ng Android.

Hình 3. Trình mô phng Android

Page
4
of
11
Nh

p môn phát tri

n

ng d

ng Android


Android Debug Bridge

Tin ích
adb
h tr mt s i s dòng lnh tùy chn, mang li các tính nng mnh m, nh sao chép tp tin n và t-

thit b. $i s dòng lnh shell cho phép bn kt ni vi chính in thoi và a ra các lnh shell thô s. Hình 4 cho

thy lnh trình shell
adb
i vi mt thit b thc c kt ni vi mt máy tính xách tay Windows b(ng mt cáp
USB.

Hình 4. S dng lnh shell
adb


Page
5
of
11
Nh

p môn phát tri

n

ng d

ng Android


Trong môi trng shell này, bn có th:

Hin th cu hình mng cho thy nhiu kt ni mng. Chú ý các kt ni mng:

lo
là kt ni cc b ho+c kt ni vòng tr li.


tiwlan0
là kt ni WiFi vi mt a ch cung cp bi mt máy ch DHCP cc b.

Hin th ni dung ca bin môi trng
PATH
.

Thc hin lnh
su
 tr thành siêu ngi s# dng.

Chuyn th mc n /data/app, ni lu tr các ng dng ca ngi s# dng.

Thc hin lit kê ni dung th mc,  ây bn s nhìn thy ch mt ng dng n l&. Các tp tin ng dng
Android thc t là các tp tin lu tr có th xem ni dung b(ng WinZip ho+c công c tng ng. Phn m
rng là apk.

Phát lnh ping  xem Google.com ã s'n có cha.
T- cùng mt môi trng du nh!c lnh này, bn c)ng có th tng tác vi các c s d liu SQLite, khi ng
chng trình, và nhiu nhim v mc h thng khác. $ây là mt chc nng khá n"i bt, nu lu ý r(ng bn ã ch kt
ni vi mt in thoi.
Trong phn tip theo, bn s to ra mt ng dng n gin Android.



Vi
t mã mt ng dng c bn

Phn này cung cp mt vòng tham quan nhanh nh cn lc v cách xây dng mt ng dng Android. 5ng dng m u

n gin nh bn có th hình dung: mt ng dng “Hello Android” ã ci biên. Bn s b" sung mt s#a "i nh4 
làm cho toàn b màu nn ca màn hình thành màu tr!ng  bn có th s# dng in thoi nh mt èn pin. Không tht
c áo, nhng nó s b" ích nh mt ví d. Hãy ti v b mã ngun y .
$ to ra mt ng dng trong Eclipse, chn
File > New > Android project
, nó khi ng th thut New Android
Project (D án Android mi).

Page
6
of
11
Nh

p môn phát tri

n

ng d

ng Android
Hình 5. Th thut New Android Project



Tip theo, bn to ra mt ng dng n gin ch có mt hot ng n l&, cùng vi mt bài trí giao din ngi s# d
ng
lu trong main.xml. Bài trí này cha mt ph,n t# vn bn mà bn s!p s#a "i thành Android FlashLight (èn pin
Android). Bài trí n gin c trình bày nh di ây.


Lit kê 1. Bài trí Flashlight


To mt vài ngun màu s!c trong strings.xml.

Lit kê 2. Màu sc 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ó mt màu nn c nh ngha là
all_white
. Trong tp tin strings.xml, bn thy r(ng
all_white
c nh ngha nh là mt b ba giá tr RGB là #FFFFFF, hay là hoàn toàn màu tr!ng.
Bài trí này cha mt
TextView
, (khung nhìn vn bn) n l&, ó tht ra ch là mt on vn bn tnh, không biên tp
c. Vn bn này c +t thành màu en và cn chính gia theo chiu ngang vi thuc tính
gravity
.
5ng dng có mt tp tin ngun Java tên là FlashLight.java, nh ch ra di ây.

Lit kê 3. Flashlight.java


Mã này là mt vn bn tho s'n (boiler-plate) trc tip t- th thut New Project:

Nó là mt phn ca gói Java tên là com.msi.flashlight.


Nó có hai mc nhp kh,u vào:

Mt là ca lp activity (hot ng)

Mt là ca lp bundle (bó)

Khi hot ng này c khi to, phng thc
onCreate
c gi ra, nó chuyn giao tham i là mt (bó)
savedInstanceState
. $-ng quan tâm n bó này i vi mc ích ca chúng ta, nó c s# dng khi
mt hot ng b treo và sau ó tip tc li.

Phng thc
onCreate
là np chng è lên phng thc ca lp activity có cùng tên gi. Nó gi phng thc

onCreate
ca lp bc trên.

Mt lnh gi
setContentView()
s g!n bài trí giao din ngi s# dng ã nh ngha trong tp tin
main.xml. Bt c th gì trong main.xml và strings.xml u c t ng ánh x ti các h(ng ã nh ngha
trong tp tin ngun R.java. $-ng bao gi chnh s#a tp tin này trc tip, vì nó c thay "i theo t-ng ln xây
dng.
Vic chy ng dng s trình di%n mt màn hình màu tr!ng vi vn bn màu en.

Hình 6. Màn hình trng ca flashlight


!#  /
!!!,/
!0/
!&-  ,1
"22*%  2"
!&*304561
!*3456/
*)%376/
8
8
Page
8
of
11
Nh

p môn phát tri

n

ng d

ng Android


Thit lp tp tin AndroidManifest.xml dành cho ng dng FlashLight trình bày di ây.

Lit 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

Tp tin này c to ra mt cách t ng bi trình c!m thêm Android Developer Tools cho Eclipse. Bn không phi
làm gì ht.
Tt nhiên, ng dng này không cc k3 tuyt vi. Nhng nó có th tin dng nu bn mun c mt ít mà không phin
nhi%u gic ng ca v/chng bn, ho+c nu bn cn tìm li i n hp cu chì trong tng hm trong khi mt in.




Tóm tt

Trong bài này, bn ã tìm hiu v Android  mc rt cao và ã xây dng nên mt ng dng nh4. Hy vng r(ng ví d
ã làm cho bn có c s hng khi   khám phá thêm nn Android. Android ha h2n là mt nn tng mã ngun
m làm chuyn ng th trng mà s hu ích c ngoài phm vi in thoi di ng.




Ti v



Tài nguyên

Hc tp


Open Handset Alliance (Liên minh Thit b cm tay m) là mt tp oàn 47 công ty công ngh và in thoi di
ng ã tp hp nhau li  tng tc "i mi v in thoi di ng mang li cho ngi tiêu dùng mt tri
nghim v in thoi di ng phong phú hn, ít tn kém hn, và tt hn. Cùng vi nhau, h ã phát trin
Android, nn di ng hoàn chnh, m và mi%n phí u tiên.


Android developers site (trang Web ca các nhà phát trin Android) cung cp các tài liu, phn ti v, blog, và
nhiu th khác na.



Tìm hiu nhiu hn v Máy o Dalvik.


Xem các bài hng d n có trên máy ch YouTube bàn lun v các chi tit bên trong ca Máy o Dalvik.


Unlocking Android: A Developer's Guide (M khóa Android: Mt Hng dn ca Nhà Phát trin) cung cp ch

d n súc tích, thc ti%n v h iu hành và các công c phát trin Android.


$ nghe các ph4ng vn và tho lun thú v i vi các nhà phát trin phn mm, xem developerWorks podcasts.



Theo sát các bu"i phát tin trên mng và s kin k1 thut ca developerWorks.


Theo dõi developerWorks trên Twitter.


Xem các hi ngh, trng bày thng mi, các bu"i phát tin trên mng, và Events các s kin khác trên kh!p th
gii s!p di%n ra mà các nhà phát trin mã ngun m ca IBM quan tâm n.

"
"!!
"
Mô t Tên Kích thc Phng thc ti
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 cp vào vùng mã ngun m trên developerWorks  có các thông tin hng d n cách làm, các công c,

các d án cp nht  giúp bn phát trin vi các công ngh mã ngun m và s# dng chúng vi các sn ph,m
ca IBM.



Theo dõi và tìm hiu v IBM và các công ngh mã ngun m và các chc nng ca sn ph,m b(ng các trình
di%n mi%n phí theo yêu cu trên developerWorks (developerWorks On demand demos).


Ly sn phm và công ngh


Ti v Android SDK.


Nhn bn Eclipse IDE mi nht.


$"i mi d án phát trin mã ngun m tip theo ca bn b(ng phn mm dùng th# ca IBM (IBM trial
software), s'n có  ti v ho+c trên a DVD.


Ti v các phiên bn ánh giá sn ph,m ca IBM (IBM product evaluation versions) ho+c khám phá dùng th#
trc tuyn trong SOA Sandbox ca IBM và hãy b!t tay vào các công c phát trin ng dng và các sn ph,m
phn mm tng gia t- DB2®, Lotus®, Rational®, Tivoli®, và WebSphere®.

Tho lun


Tham gia vào các blog ca developerWorks và gia nhp cng ng developerWorks.



ôi nét v tác gi





Sau khi s nghip trong i bóng r" ca trng cao *ng kt thúc mà không có mt hp ng dài hn nhiu nm chi
cho i LA Lakers, Frank Ableson ã chuyn chí hng ca mình sang thit k phn mm máy tính. Ông thích gii
quyt các vn  phc tp, nht là trong các lnh vc truyn thông và lp giao din phn cng. Khi không làm vic,
ông dành thi gian vi ngi v Nikki và con cái. Bn có th g+p Frank ti a ch
Page
11
of
11
Nh

p môn phát tri

n

ng d

ng Android

×