Professional Documents
Culture Documents
Lap Trinh - Bạn Nên Chọn Công Cụ Nào Để Phát Triển Ứng Dụng Di Động Đa Nền Tảng - - VinaCode
Lap Trinh - Bạn Nên Chọn Công Cụ Nào Để Phát Triển Ứng Dụng Di Động Đa Nền Tảng - - VinaCode
Bnnnchncngcno
phttrinngdngdinga
nntng?
BivitcdchtSimpleProgrammer
Vikinhnghimsdnghuhtttcccgiiphpchyutrongphttrinccngdngding
anntng.Vsaukhilmvicvittcccgiiphpkhcnhaucngvivicnghincuthm
nhngnntngkhc,tinghrngmnhnnxutbnmtbivitaranhngsuynghcabn
thnvmislachnnitrnvskhcnhaugiachng.
HunhtistptrungvohainntngchnhlAndroidviOSbivmcdtrnthtrngcngc
nhngithcnhtranhkhc,nhngthcrachnhngtaychilnlcntntichonngynay.
Minntngcnlichchiasnhaumtmingbnhnhbtrongthtrngngdngdingm
thi.
Cngcphttrinngdngdinganntngnolttnht?
NubnquantmthcththamgiamtskhahcdotixutbntiPluralsightbaogm:
MonoTouch(Xamarin.iOS)
MonoforAndroid(Xamarin.Android)
PhoneGap
AppceleratorTitanium
NativeAndroidDevelopment
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
1/7
8/28/2014
NativeiOSDevelopment
MonoGame(Phttringameanntng)
Phttrinngdngdngnative(dnggc)
Cchphbinnhtxydngccngdngdinglsdngcccngcnative(gc)icngvi
nntng.iviAndroidthnlJavavEclipsehoclAndroidStudiomicah,icngvi
AndroidSDK.iviiOS,thnlObjectiveChocSwiftvXCode.iviWindowsPhonethnl
C#vVisualStudio.
Cnnh,ngdngdingutinmtiphttrinlchoiOSvAndroidgc.Lcutixydng
mtphinbnngdngtrnAndroidvsautinhchuyntonbcodevthitkcangdng
nysangiOS.ylmtcngvictngikhvtihunhkhngthsdngphncode
chungnogia2ngdng.Tiphihcc2nntngikmviccSDKcahvti
cnghcthmngnngObjectiveC,bivtrckhitibtuvitngdngiOSutinca
mnhthtikhngbitvObjectiveChocmtchtgvphttrinngdngtrnmitrngMac.
Nichung,tiskhngxutcchlmnybivbnstnrtnhiuthigianduytrm
nguncahaingdnghontontchbitnhauvbnthcskhngthucgnhiu
bngcchsdngcccngcnative(gc).
Tuynhin,ticngxutrngbtkaicnhnghimtcvphttrinngdngding
anntngthtnhtcngnnphttrinmtngdngdngnatively(gc)ngintrnc
AndroidviOS.Ldonnlmiunylbivnsgipbnddnghnhiucigang
dinradicclptrutng(abstraction)trongmtgiiphpphttrinngdngdingann
tng,vnscungcpvgipbnnhnthyimmnh,imyutrongccgiiphpanntng
ny.
XamarinTools
CccngccaXamarinvcbnschophpbnphttrinccngdngAndroidhociOSbng
ngnngC#vcthchiasrtnhiuphncodegiaccngdngvinhau.
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
2/7
8/28/2014
KhivitmtngdngsdngbcngccahngXamarinthvcbnlbnangsdngmt
lptrutngphatrnccSDKthcscaiOSvAndroid.iunycnghalbnsthuckt
qulmtngdngnativehontoncngvigiaodinngidngnativetrnminntng.
Nhngiunycngcnghalbnsbgiihntimtmcnovicchiascodegiacc
nntngny.inhnhlkhitiphttrinmtngdngsdngcngccaXamarin,tisxy
dngmtphnlicangdngmcodecancthchiasgiahainntngiOSvAndroid,v
thmchlcphinbntrnWindowsPhonecangdngcngdatrnthvinliny.Vihng
tipcnnythbnckhnngsdnglikhongt6070%codecangdngmkhngphivt
v.
Nhngbncthtinxahnbngcchhocltphttrincclptrutng(abstractions)ca
ringmnhsdngmtkintrckiunhMVChayMVVM,hoclbncthsdngmtframework
nhMVVMcross.Vihngtipcnny,dnhinlskhhnmtchtbtunhnngcth
sdngclinhiucodehn,cllnnkhong8090%.
NunhgivcngcthcccngccaXamarincthnilrttuytvi!Xamarincngc
mtIDEcaringngilXamarinStudio.IDEnythanntng,ncthitkrtttvddng
sdng.CngcXamarinnycngcmtpluginchoVisualStudio,nschophpbnphttrin
ngdngcamnhtrongVisualStudio.ThmchbncthphttrinmtngdngiOStVisual
Studio,nhngscnmtmyMacthchincngvicbuildngdng.(Cngcnysdngmt
triugitxatimyMacthchincngvicbuild.)
GnyXamarincngvagiithiumtcomponentstore(khochaccmun),iunysgip
bntmcccthnhphncthsdnglitrctiptXamarinStudiomtcchddnghnv
gnchngvotrongngdngcamnh.
NhngcunschhayvcngcXamarin:
MobileDevelopmentwithC#:BuildingNativeiOS,Android,andWindowsPhone
Applications(cvitbichuyngiacngnghGregShackles)
DevelopingC#AppsforiPhoneandiPadusingMonoTouch:iOSAppsDevelopmentfor.NET
Developers(camttinngkhcvXamarinlBryanCostanich)
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
3/7
8/28/2014
PhoneGap
PhoneGapcthcxemlcitnnitingtiptheotrongccgiiphpphttrindingann
tng,nhngncngcnhiuimgykhhiuchomingi.
PhoneGapvcbnlmttpcchmJavaScriptAPI,nchophpbncthtruycp
nhngkhnnggctrongthitbding.Ncnglmtwrappervchophpbnxydng
mtngdngwebmsccitccbtrnthitb.
KhibnxydngmtngdngsdngPhoneGap,thvcbnlbnangxydngmttrang
webdingsdngHTML5vJavaScript,cnggingnhbnxydngnhngtrangwebkhc
hinnay,nhngbnangtmHTMLvJavaScripttrnthitbding.Ccngdng
PhoneGapchytrntrnhduytccbtrninthoivcmtshooktriugivoccthvin
gcthngquaccgiaodinlptrnhngdngJavaScriptAPI.
Ttciunycnghalg?
Vng,ncnghalnubnangphttrinmtngdngPhoneGap,thbncthphttrinn
gingnhmttrangwebdinganntng.Bncthsdngbtkmobileframeworknom
bnmun,nhSenchaTouch,hocJQueryMobile,v.v
VttccodetrongngdngcabnlHTMLvJavaScriptnnphnlnscthchias
c,nhngbnskhngcthvitmtngdngdngnative.
BivngdngPhoneGapcabnschytrongmttrnhduyt,vthnsgingmtngdng
webhnlmtngdngdngnative.Giaodinngidngmbnthitkskhngsdngnhng
controlgcvsphthucvogiihnvtccatrnhduytweb.iunycngcnghalbn
cthphivitmtscodechomtnntngxcnhnophhpviccloitrnhduytkhc
nhau,nhngvcbnthbnsckhnngchiashuhtnhngoncode.
CngcchoPhoneGapnyphthuchontonvomitrngmbnmunxydngngdng
trn.Bncthphttrinntrongbtcmitrngnombnthchvvcbnlsdng
mtpluginchoIDEtronghuhtcctrnghp.Cnphicmtsbcnhthaotcbngtay,v
thcngvicsetupnykhngdcholm.NhngmtlichlncaPhoneGaplchophpuploadd
ncabnvobtcmitrngnokhcmitrngmbnton,vcthbuildmtccht
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
4/7
8/28/2014
ngchonhngnntngkhc.
NhngcunschhayvcngcPhoneGap:
PhoneGapEssentials(catcgiJohnM.Wargo)
PhoneGap2.xMobileApplicationDevelopment(catcgiKerriShotts)
AppceleratorTitanium
Timuncpnnntngnytiptheobivrtnhiulptrnhvinbnhmlngianv
PhoneGap.AppceleratorTitaniumhontonkhcviPhoneGap.Chcmtimgingl
ngnngcsdnglJavaScript.Mithcnlithhontonkhcbit.
ViAppceleratorTitaniumthbnsdngmtcustomAPIphttrindinganntngxydng
ngdng.iunykhcviPhoneGaphocXamarin,bivviXamarinthbnsdngmtwrapper
xoayquanhccSDKnativethcth,cnviPhoneGapthbnsdngbtccigmmnhmun
xydngmtngdngwebHTML5.
ViTitaniumthbnthcsvitttccodecamnhdatrnSDKcahbaogmccthnh
phngiaodinUI.iunycnghalkhibnvitmtngdngTitaniumngnghavi
vicbnangvitmtgiaodinngidnganntng.
CcngdngAppceleratorTitaniumcbindchxungticcngdnggchontonv
sdngnhngcontrolgcthcstrnnntng.
Vd,trongTitaniumbncthlptrnhkhaibomtbuttonvlayoutxcnhcancngnhmt
sthuctnhchobutton.Khibnbindchngdng,thcibuttonsxuthinnhlmt
buttongccaAndroidkhichytrnthitbAndroidvnhlmtbuttongccaiOSkhinchytrn
iOS.
VyiunycnghalbncthxydngmtngdnganntnghonchnhbaogmUIvi
100%codecsdnglivthchinntrongJavaScript?
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
5/7
8/28/2014
Cth,nhngcngkhnghnnhvy.NhiuthnhphnUIvmhnhtngtclanntng,
nhngnhiuphnskhngnhvy.Vd,trongiOSthbncmtcontrolrtltnglNavigation
Controller,nsluvtccscreennombnltquavchophpbnquaytrlimtcchd
dngtrongAndroidthkhngccontrolnhvy.Nhng,Titaniumcnghtrcccontroltheonn
tngxcnh,cnghalbnphivitthmmtvioncodeiukindatrnnntng.
Ttciunynilnmtiurngbncthlptrnhvimuschungnhnhtgia
ccnntngvthucmtngdnganntngycngvignnh100%codec
thsdngli,nhngmcdbnsccccontrolgc,nhngktqucthkhng
cttlm.
Mtthctl,nubnangsdngTitaniumthbnscthmuniuchnhmtsphncang
dngchophhpvinhngnntngxcnh.
Titaniumthcscmtscngcrttt.CmtTitaniumIDErtmnhmvchophpauto
completingcconcodeJavaScript,cbitliviccTitaniumAPI.QutrnhbuildtIDEny
cngvcngnginvthmchchophpbnbuildmtngdngwebbnngoitrncng
codebase.Ngoiracngcmtch(marketplace)chaccthnhphnmbncthsdngv
muabsungchoccngdngcamnh.
TitaniumgnygiithiumtMVCframeworkctnlAlloy,nlmtcngctuytvito
raccngdngTitaniumvgipbngimbtcctcvlptrnhnhmchnkhitoraccgiaodin
ngidng.Cngviframeworkny,bnkhaibogiaodinngidngthngquamtfileXML,cng
vicnytngingin.SaubncthsdngcclpcontrollertngtcviUI.N
cngckhinimvstylesheetgngingviCSS.
Tuynhin,mttrongnhngcimntngnhtvTitaniumlnaracctnhnng
vcloud.Titaniumvcbnchophpbncthtruycpticcdchvmmy(cloudservices)
phabackendcahmtcchy,iunyschophpbncthddngtoranhngtnh
nngrthaygingnhlFacebooklikembnkhngphivitcodephabackend.Bncths
dngccdchvmmynyqunlvxcthcngidng,lutrdliuvh,cngnh
socialgraphsvthmchchcnlutrdidngcccpkey/value.Tithcsrtntngbi
chcnngny.
NhngcunschhayvcngcAppceleratorTitanium:
AppceleratorTitaniumApplicationDevelopmentbyExampleBeginnersGuide(catcgiDarren
Cope)
AppceleratorTitanium:PatternsandBestPractice(catcgiBoydleePollentine,TrevorWard)
Cctychnphttrindinganntng
khc?
Dnhinlcrtnhiulachnphttrinkhc,nhngtichchn3nntngphttrinngdng
chunnytchnhkinhnghimcabnthn,vycthxemlnhngcngcaranhiutnh
nngtuytvinht.
C3ctrngcngcbaogmtrongcccngcphttrindinganntngny:
Chiascode,nhngphnbitvcUInative(Xamarin)
CcngdngHTML5chyccb(PhoneGap)
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
6/7
8/28/2014
Ccngdnggccthchiascodehonton(Titanium)
Dnhinlcngcnhngmthnchcanhnghngtipcnnyvtrninykhngcgl
honhoc,nhngtinhgicaottcccgiiphpttny.
Nichung,tithchhngtipcnXamarinnhtbivcccontrolcancgiaodinngi
dngginghontonvicccontrolgcvtimunckhnngphttrinnbngngn
ngC#.
Tuynhin,nutiphttrinngdngbngPhoneGapthtissdngIcenium,vncbnlmt
IDEcngmttpcccngctrgipvicbuildvkimthdatrnCordova(mtphnmngun
mcaPhoneGap),ngipchocngvicphttrinvtrinkhaingdngcddnghn.
BncngngqunngkcckhahctiPluralsight,nubnmunhccchlmthnos
dngmtcchnhanhchngccframeworkphttrindingnitrn.
Nubnangsdngcngcnokhcphttrinngdngdinganntngthhy
dnhchtthigiangiithiuvimingiphnbnhlunphadinh!
Ccbivitlinquan:
Tinnhcngnnglptrnhno?
Nghlnvhnhngthnhcng
10Bquytthcmtcngnghmi
Ttclptrnhullptrnhweb
10Bquyttrthnhmtlptrnhvingii
Vtcgibivit:
JohnSonmezlmtlptrnhvin,ngilpratrangwebSimple
Programmer,ngthianhltcgicagiotrnhhctrctuyn
Pluralsight.Anhxutbnhn50khahctrctuynvccchnh
iOS,Android,.NET,JavavphttrinGames.Bncthlinhvianh
quaTwitter.
http://vinacode.net/2014/08/25/nen-chon-cong-cu-nao-de-phat-trien-ung-dung-di-dong-da-nen-tang/
7/7