移動開發框架PhoneGap技術分析

移動應用產品往往常??紤]多個平臺的支持.單一平臺很難保證應用的覆蓋面或者換句話說就是用戶群體的量和持續的活躍性上從長期的角度而言往往存在短板.另外從開發的角度而言.多平臺的支持往往需要建立不同的技術團隊.而平臺之間開發技術也是完全迥異的. 開發一個具有相同業務的應用Natural-Application需要使用到不同平臺的框架和開發語言.使用 C/C++ 的 Symbian、使用 Object C 的 iOS 和使用 Java 的 Android 應用開發技術,幾乎是完全無法融合的. PhoneGap跨平臺移動應用開發框架正是應運而生.

  我們需要搞清楚幾個概念:Web App,Native App,Hybird App移動平臺Application幾個概念:

  Web App

  這個主要是采用統一的標準的HTML,JavaScript.CSS等web技術開發.通過不同平臺的瀏覽器訪問來實現跨平臺.同時可以通過瀏覽器支持充分使用HTML5特性,缺點是這些基于瀏覽器的應用無法調用系統API來實現一些高級功能,也不適合高性能要求的場合.

  Native APP

  就是所謂的原生應用.指的是用平臺特定的開發語言所開發的應用.使用它們的優點是可以完全利用系統的API和平臺特性,在性能上也是最好的。缺點是由于開發技術不同,如果你要覆蓋多個平臺,則要針對每個平臺獨立開發,無跨平臺特性.

  Hybird App

  則是為了彌補如上兩者開發模式的缺陷的產物.分別繼承雙方的優勢.首先它讓為數眾多的web開發人員可以幾乎零成本的轉型成移動應用開發者;其次,相同的代碼只需針對不同平臺進行編譯就能實現在多平臺的分發,大大提高了多平臺開發的效率;而相較于web App,開發者可以通過包裝好的接口,調用大部分常用的系統API.

  而PhoneGap正是Hybird APP目前框架中集大成者

  phonegap簡介

  phoneGap是Nitobi開發的一個免費開源的開發框架,目前最新版本是1.5,用來構建跨平臺的使用HTML,CSS和JavaScript的應用程序。以written once, run everywhere一次編譯到處運行而受歡迎,只需要改動少量代碼而實現跨平臺。

  phonegap 簡單來說是一個中間件,為移動前端提供訪問移動終端設備及資源的接口。采用統一的標準的html、javascript、css等web技術開發.通過不同平臺的瀏覽器訪問來實現跨平臺。通過javascript腳步代碼調用系統資源,以降低開發難度,所以受到廣大web開發人員的青睞。

  2011年10月4日Adobe宣布收購了創建了HTML5 移動應用框架PhoneGap 和PhoneGap Build的新創公司Nitobi Software。這使得phonegap有了堅強的后盾,phonegap的發展前景也是一片光明。與此同時,PhoneGap的開源框架已經被累積下載60萬次,借助PhoneGap平臺,已有數千應用程序建立在iOS,android以及其它操作系統之上。

      4 phonegap技術要求

  Adobe dreamweaver 5.5版本為phonegap提供了優越的開發環境。開發人員可以使用dreamweaver 5.5開發android app。雖然phonegap門檻較低,但是也要求開發人員具備必要的技能。

  要求開發人員掌握html、css、javascript技術,特別要求javascript技術,在javascript基礎上需要掌握jQuery mobil框架ajax通訊技術。

  5 phonegap優缺點評估

  日前,phonegap框架熱度如火如荼。一項技術當然會有其優缺點,我們是選用phonegap還是選擇Native APP,要先分析兩者的利弊,再根據具體應用選擇,

  5.1 phonegap優點:

  5.1.1、可跨平臺。phonegap作為跨平臺框架,其實并別written once, run everywhere,各移動平臺的差異還是較大,phonegap框架幫我們解決了差異性,javascript與平臺系統的連接由phonegap框架完成。成為連接移動終端的適配器,或者說中間件。它的原理如下圖:

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

  5.1.2 易用性

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

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

  5.1.3 提供硬件訪問控制

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

  5.1.4 可利用成熟javascript框架

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

  5.1.5 方便的安裝和使用

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

  5.2 phonegap不足之處

  5.2.1 運行速度慢

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

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

  5.2.2 不適合部分程序

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

  5.2.3 調用平臺資源差

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

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

  5.2.4 內存消耗大

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

  5.2.5 調試難度大

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

  5.2.6 開發費用方面

  phonegap可以滿足web開發人員轉入。但由于html5的新發展,對javascript、css的要求更高。所以開發良好用戶體驗應用,在開發費用上并不太樂觀。

  6 phonegap與android java對比評測

  測試對象:Delicious書簽訂閱應用

  Android應用類型Html5 (phonegap)Android java

  功能實現Html + jQuery基礎庫ListView組件

  文件大小159KB23KB(只用了系統的原生界面)

  內存占用45.37MB(RSS)27.02MB(RSS)

  數據通信AjaxApache http Java功能包

  啟動速度打開相同訂閱源2.7秒打開相同訂閱源2.3秒

  操作響應速度正常操作速度流暢,頻繁操作響應會變慢操作速度流暢

  穩定性在Monkey測試注入大約4萬個事件時,整個應用已經處于空白無響應狀態。有連接超時情況發生。手動頻繁操作會引起,響應速度變慢,webkit的WebView不能很好釋放內存,甚至會引起應用的crash。能較好處理Activity切換延時等待。運行較為流暢。Monkey測試時書簽列表頁切換時有時候會出現黑色背景,然后再載入列表,比正常速度稍慢。能夠比較好的釋放內存,沒有出現過應用crash的情況。

  資源占用對于頻繁操作時,內存釋放不夠理想,導致內存占用上升。內存占用相對比較穩定。

  開發成本運用html + css + javascript開發,適合前端人員開發。由于webkit在不同的終端機發行版本不一樣,所以需要針對不同的機型進行適配。同時對于不同屏幕大小在適配上也只能通過Javascript進行控制實現。適合有Java開發經驗的程序員,可以充分利用Android提供的組件進行開發。但是開發學習成本較高。

  開發難度目前phonegap只使用一個WebView,開發時需要使用OPOA的模式,對代碼的組織方式及開發方式有較高要求。同時介于手機的資源有限,對如何管理和分配內存提出了要求。目前phonegap可以在控制臺輸出簡單的JS調試日志,但是并不方便。需要有Java開發經驗,同時對Android開發體系有較深入的了解。

  多人協作OPOA模式并不利于多人協作并行開發,只能通過基礎的javascript的設計模式來解決多人協作的問題。比較方便支持多人協作并行開發。

  其它問題1.內存優化:webapp因為是基于瀏覽器的,而瀏覽器自身是進行了相應的優化的,所以在圖片顯示上很不錯。

  原生app如果在一頁中顯示比較多的圖片的時候,必須比較細致完善的進行內存優化工作,否則極易出現因為圖片資源過大而引起的崩潰問題。

  2.圖片縮放裁切 webapp一般情況下通過js和css來進行縮放裁切。在進行圖片動態縮放的時候,頁面顯示情況不是很正常(抖動,跳躍)。最好的辦法是后端服務器對圖片處理后再發送給手機端。

  原生app可以直接通過java來對圖片進行處理。

  3.布局 原生app可以利用android提供的特殊技術方案,來自動適應多種分辨率的屏幕。如9png和 多drawable目錄。 相當簡單方面。 但是在交互方面,原生app的開發量會比較大。

  webapp就比較杯具一些了,需要開發者比較多的關注。 可以通過js來動態的獲取屏幕尺寸進行資源調整和加載(開發幾套不同的ui,然后根據分辨率js動態加載),這個會花費比較多的時間。

  4.調試

  webapp js調試不太方便,特別是調用外部應用的時候。如果是本應用內部,可以通過firebug進行調試。

  此次對比主要集中在對大量數據通信下web app UI性能。通過與android Java app相比較,web app的UI性能會比Java app的UI性能差。主要原因是依賴webkit瀏覽器內核的渲染解析能力。同時在只有一個WebView的情況下,如何控制內存的上漲速度以無法釋放內存的情況無縫地重新啟動WebView從而不影響用戶體驗,是一個現實待解決問題。

  在非大數據量且不需要頻繁更新UI的情況下,基于wekit瀏覽器phonegap模式還是可以滿足Android開發應用的需求。同時應用的實現的效率還依賴于OPOA開發模式的Javascript基礎架構是否強大和高效。

  對于不同分辨率的屏幕,需要通過JS或者通過要集成的框架封裝來解決適配的問題。同時由于不同版本的Android所集成的webkit的版本不同,同樣也需要處理不同版本的在JavaScript和CSS支持上不同的兼容性問題。還有解決開發時多人協作及方便的調試工具集成,也是進行html5 app開發的重要前提條件。

  或者通過要集成的框架封裝來解決適配的問題。同時由于不同版本的Android的版本不同,同樣也需要處理不同版本的在JavaScript支持上不同的兼容性問題。還有解決開發時多人協作及方便的調試工具集成,也是進行html5 app開發的重要前提條件。

  7 結語

  phonegap的目標就是快速開發移動應用實現written once, run everywhere跨平臺。phonegap一定程度上降低了移動開發的門檻,特別是ios開發。傳統web開發人員不需要學習object-c、android java就可以開發普通的移動應用。

  類似于phonegap這樣的框架的出現,并不能取代Native APP原生態應用。phonegap有它的不足之處,運行速度較慢、操作平臺資源不靈活、操作移動設備不方便,這些都依賴者phonegap框架本身的升級與發展。不過值得高興的是adobe公司收購了phonegap開發商,增加了phonegap的后臺實力。phonegap的種種不足之處表明Native app的地區不能被取代,只能說會瓜分一部分簡單web移動應用。

  在用戶體驗方面。phonegap運行速度相對慢,頁面動畫切換有點卡,這影響著用戶體驗。這些原因能否解決,這取結于移動平臺的webkit的性能優化和對html、css、javascript的支持程度。

  在硬件支持與內存方面。一個應用用兩種方式實現,native app消耗內存較低,要求硬件支持較低。phonegap消耗內存較大,內存釋放效率較低,因而要求的硬件支持相比之下就高了。

  開發費用方面。phonegap要求開發人員的javascript、css技術高,甚至要求開發人員掌握html5新技術。這樣開發人員費用高于傳統web開發人員。不過,與native app相比,phonegap可以實現跨平臺,減少在各個平臺上花費開發費用??傮w上,一個移動產品采用phonegap,費用要低些。

  至于是否采用phonegap于native app方式,這要取決于移動產品本身特性與企業對產品的要求。一般的移動web應用可以采用phonegap技術,但是用戶體驗就沒有native app好;接近于游戲的應用,經常刷新界面的應用,使用phonegap就不太合適了。最后,采用何種技術,要看產品的側重點。像QQ這樣的應用,注重用戶體驗,應該不會采用phonegap了。

 來源:IT168

Copyright ? 2008-2019 Aiitec Inc. AII rights reserved 廣州愛特安為科技股份有限公司 版權所有
地址:廣州市荔灣區花地大道中66號荔勝廣場(華南新三板大廈)北塔13樓
銷售熱線:020-81537575、400-000-8130總機:020-81010649
番禺分公司地址:廣州市番禺區鐘村街鐘韻路56號2樓
澳門分公司地址:澳門亞美打利庇盧大馬路346號勝昌商業大廈3樓D室
網站備案號:粵ICP備 10206031 號 股票代碼:872375
金博188官方网址