跨平台PhoneGap技術架構一:PhoneGap簡介


學習PhoneGap有一周多的時間了,利用晚上的時間對PhoneGap學習整理一下筆記,以隨筆的形式發布在博客上,希望可以和博友一塊學習討論。

本篇分為以下幾個部分:

    1. PhoneGap簡介
    2. PhoneGap跨平台原理
    3. PhoneGap的優缺點
    4. PhoneGap應用案例

PhoneGap簡介

PhoneGap是一個開源的開發框架,使用HTML,CSS和JavaScript來構建跨平台的的移動應用程序。它使開發者能夠利用iPhone,Android,Palm,Symbian,Blackberry,Windows Phone和Beda智能手機的核心功能——包括地理定位,加速器,聯系人,聲音和振動等。

PhoneGap跨平台原理

在phonegap中,通過android和iphone的webview實現對html網頁的展示。以Android為例,PhoneGap采用android中webview實現對html調用以及js調用java方法的。其實質也是phonegap插件的原理。
iPhone和Android平台共同點是都有內置的WebView組件,其具備兩個特性:

1. WebView組件實質是移動設備的內置瀏覽器

WebView這個內置瀏覽器特性是Web能被打包成本地客戶端的基礎,可方便的用HTML5、CSS3頁面布局,這是移動Web技術的優勢相對於原生開發。

 

2. WebView提供Web和設備本地API雙向通信的能力

PhoneGap針對不同平台的WebView做了擴展和封裝,使WebView這個組件變成可訪問設備本地API的強大瀏覽器,所以開發人員在PhoneGap框架下可通過JavaScript訪問設備本地API。
明白以上兩個特性,參照下面PhoneGap與設備本地API通信圖,一個成熟的PhoneGap技術客戶端運行狀況如下:
應用運行在WebView組件上 → 通過PhoneGap在各平台的擴展 → 最終訪問設備本地資源

 

 

PhoneGap的優缺點

優點:
1. 跨平台
phonegap作為跨平台框架,其實並別writtenonce, run everywhere,各移動平台的差異還是較大,phonegap框架幫我們解決了差異性,javascript與平台系統的連接由phonegap框 架完成。成為連接移動終端的適配器,或者說中間件。

PhoneGap通過調用JavaSCript 調用API庫實現和各個平台的SDK進行無差別的交互. 以達到調用不同平台手機上攝像頭,文件系統,重力感應.GPS定位等功能。

2. 易用性
phonegap開發人員無需直接操作平台資源。對平台資源的操作完成由phonegap框架完成。開發人員只需要用 javascript調用phonegap API就可以完成對平台資源操作。由於phonegap框架限制,對平台資源操作是有一定限制的。

phonegap開發人員可以從web開發人員轉入,目前來說web開發人員較多,成本也較低,轉入phonegap開發后,可以降低移動應用產品的開發成本。這樣,移動應用數量將直線提升。

3. 提供硬件訪問控制
比起傳統的Web程序,PhoneGap提供了一些列的JS 的類,可以直接訪問硬件。比如加速,相機,指南針,GPS,文件訪問等,可以讓你用JS方便地調用系統的硬件。以彌補傳統Web程序的一塊錯誤。

4. 可利用成熟javascript框架
web的發展,誕生了許多javascript框架。著名的有Ext js、jQuery。隨着移動應用的需求越來越大,jQuery出現了jQuery mobile版本。它的體積小,為移動應用量身定制。使用javascript框架也降低了開發難度,使得移動應用更美觀。

5. 方便的安裝和使用
PhoneGap的架構很復雜,但對於大多數開發者來說,並不需要了解phonegap內部,只用很簡單的配置就可以搭好環境。只用專注寫好自己的Web頁面,拷貝進去就可以了。

不足:

1. 運行速度慢
PhoneGap集成多了個平台.程序的載入和UI界面的反應都比原生的程序慢,UI反應延時——這是個致命傷 .它實際上還是在展示Web頁面,所以載入、頁面刷新等肯定是需要一定時間的。 這在用戶體驗上來說PhoneGAp依然無法替代原生應用程序。

 另外,html、javascript、css都運行在各平台內置瀏覽器webkit之上,受到webkit處理速度影響。目前來說運行速度比較慢,性能較差。

2.       不適合部分程序

        如果你的程序需要3D功能,或者對界面刷新有較高的要求,比如類似於游戲的程序現在來說還只是用原生的語言會比較好。PhoneGap支持API還有待在各個平台逐步完善

3.       調用平台資源差

     phonegap應用程序對平台資源的使用依賴於phonegap框架本身,由於phonegap是第三方框架,做不到100%調用平台資源,只有依靠phonegap的升級滿足調用平台資源的需求。

        比如說,現在版本未能支持視頻解碼與播放等

4.       內存消耗大

        有測試表明,用phonegap於android java開發同一個應用。運行phonegap應用內存消耗遠大於原生態androidjava應用。對於頻繁操作,釋放內存較慢,從而導致內存消耗量飆升。

5.       調試難度大

        目前phonegap可以在控制台輸出簡單的JS調試日志,但是並不方便。調試js只能選擇firefox  firebug調試。

 

PhoneGap應用案例

1.僵屍菜園-Phonegap典型應用
http://www.phonegap.cn/?p=528

2.PhoneGap構建應用程序:GoodDay
http://www.phonegap.cn/?p=364

 

 

參考文章:

http://topmanopensource.iteye.com/blog/1536256

http://www.open-open.com/home/space-2869-do-blog-id-8662.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM