PhoneGAP(http://phonegap.com)按官方說(shuō)法,是HTML5移動(dòng)應(yīng)用平臺(tái),它包括兩部分:
1) 應(yīng)用開(kāi)發(fā)框架:采用Web/HTML5技術(shù)編寫(xiě)應(yīng)用,支持設(shè)備能力(如GPS、重力感應(yīng)等)調(diào)用;支持能力插件靈活擴(kuò)展。
圖1 PhoneGAP支持設(shè)備能力API列表
2) 手機(jī)應(yīng)用創(chuàng)建工具:將遵循PhoneGAP應(yīng)用框架編寫(xiě)的程序轉(zhuǎn)換/封裝生成各平臺(tái)支持的手機(jī)應(yīng)用。
圖2 進(jìn)去的是網(wǎng)頁(yè),出來(lái)的是本地應(yīng)用
2、PhoneGAP有什么用?
1)有了PhoneGAP,用HTML5技術(shù)也能開(kāi)發(fā)出傳統(tǒng)意義上的手機(jī)本地應(yīng)用,同時(shí)可以通過(guò)Javascript調(diào)用攝像頭、位置信息等設(shè)備能力。
2)有了PhoneGAP,用HTML5寫(xiě)好程序后就能生成多個(gè)手機(jī)平臺(tái)版本的本地應(yīng)用,目前支持7個(gè)平臺(tái):Android、iOS、WindowsPhone、HP WebOS、BlackBerry、 Symbian、Bada。
簡(jiǎn)單地說(shuō),PhoneGAP讓W(xué)eb程序員無(wú)需重新學(xué)習(xí),即可開(kāi)發(fā)手機(jī)應(yīng)用;實(shí)現(xiàn)了Web應(yīng)用本地化;大大降低開(kāi)發(fā)成本。
3、PhoneGAP基本技術(shù)原理:
基于PhoneGap應(yīng)用框架實(shí)現(xiàn)的手機(jī)應(yīng)用相當(dāng)于展示某個(gè)網(wǎng)頁(yè)應(yīng)用的特別瀏覽器。PhoneGAP將Web程序打包成系統(tǒng)支持的手機(jī)應(yīng)用格式(方便應(yīng)用的分發(fā)、使用),通過(guò)調(diào)用系統(tǒng)的瀏覽器功能實(shí)現(xiàn)應(yīng)用的運(yùn)行及交互操作。
1) 開(kāi)發(fā)語(yǔ)言選擇:Web/HTML5幾乎是各手機(jī)智能平臺(tái)唯一共同支持的開(kāi)發(fā)技術(shù)。因此,PhoneGAP采用HTML5技術(shù)作為程序開(kāi)發(fā)語(yǔ)言。這也是同一套應(yīng)用程序能在多個(gè)平臺(tái)運(yùn)行的技術(shù)基礎(chǔ)。
2) 應(yīng)用呈現(xiàn):各個(gè)智能平臺(tái)都具備并開(kāi)放了瀏覽器功能,因此,PhoneGAP通過(guò)調(diào)用WebView(瀏覽視圖,具有瀏覽器基本功能的組件)實(shí)現(xiàn)應(yīng)用UI的呈現(xiàn)及業(yè)務(wù)邏輯處理。
3) JS API擴(kuò)展:PhoneGAP針對(duì)不同平臺(tái)的WebView做了擴(kuò)展和封裝,使得應(yīng)用可以通過(guò)Javascript訪問(wèn)各種本地設(shè)備API。
4) 插件擴(kuò)展:實(shí)現(xiàn)了一套靈活的插件擴(kuò)展框架,允許開(kāi)發(fā)者自行擴(kuò)展能力插件。
需要特別說(shuō)明的是:在SYMBIAN平臺(tái) 上,PhoneGAP并非把Web應(yīng)用打包成本地應(yīng)用(SIS),而是打包成Widget應(yīng)用(wgz)(相當(dāng)于把若干網(wǎng)頁(yè)打包成一個(gè)文件),因?yàn)镾60 v5、Symbian3大多手機(jī)支持WRT(Web RunTime)Widget格式。這樣做,非常簡(jiǎn)單,而且還避免了比較麻煩的SYMBIAN簽名問(wèn)題。
圖3 設(shè)備能力調(diào)用原理示意
4、關(guān)于PhoneGAP
PhoneGAP是Nitobi公司的產(chǎn)品,該公司位于加拿大溫哥華。
2011年10月,Adobe收購(gòu)了Nitobi公司,并把PhoneGAP項(xiàng)目捐給Apache基金會(huì)(ASF)。PhoneGAP免費(fèi)并且開(kāi)源(遵循Apache 2.0 License)。
PhoneGAP在Apache里的項(xiàng)目名稱叫Cordova(原來(lái)叫Callback):(網(wǎng)站/源碼:http://incubator.apache.org/projects/callback.html)
目前基于PhoneGAP開(kāi)發(fā)應(yīng)用有幾千款,應(yīng)用列表:http://phonegap.com/apps
5、PhoneGAP的未來(lái)
盡管PhoneGAP在應(yīng)用的性能、應(yīng)用支持的功能以及應(yīng)用的用戶體驗(yàn)等方面還有很大的提升空間,
但它的出現(xiàn)無(wú)疑將有助于HTML5應(yīng)用的發(fā)展。
在我看來(lái),PhoneGAP最大的價(jià)值是:它顛覆HTML5應(yīng)用的分發(fā)方式,改變HTML5應(yīng)用的商業(yè)模式,并加速HTML5應(yīng)用的發(fā)展進(jìn)程。
它帶來(lái)的精彩或許剛剛開(kāi)始,讓我們拭目以待。