Cordova概述
概述
Cordova是開源免費的用Html 5構建跨平臺移動應用的框架,用來構建Hybrid應用。它實現了一套API,使應用有使用移動設備的能力。Cordova框架有以下組成部分:
- 每個支持的移動端設備平臺的原生應用容器源碼,容器渲染HTML 5應用。
- 容器里有一組API使Web應用能訪問原生設備。
- 一套管理工具,管理應用的創建、管理插件、構建原生應用,并在移動設備模擬器和仿真器上測試 </ul>
- Android(Google)
- bada (Samsung)
- Black Berry 10(BlackBerry)
- iOS(Apple)
- Firefox OS
- Tizen(Linux Foundation)
- WP 7 和 WP 8
- Windows 8 </ul>
-
Cordova Website:
</li>
http://cordova.io or http://cordova.apache.org
(指向同一網站) -
Cordova Documentation:
</li>
http://docs.cordova.io -
Cordova Wiki:
</li>
http://wiki.cordova.io -
Cordova Issue Tracker:
</li>
https://issues.apache.org/jira/browse/CB -
獲得最新信息訂閱郵件列表 Cordova Mailing Lists:
</li>
http://cordova.apache.org/#mailing-list -
Cordova 推ter Account:
</li>
http://推ter.com/apachecordova -
PhoneGap Website:
</li>
http://www.phonegap.com -
PhoneGap Wiki:
</li>
http://wiki.phonegap.com -
PhoneGap Blog:
</li>
http://www.phonegap.com/blog -
PhoneGap 推ter Account:
</li> </ul>
https://推ter.com/phonegap最基本的還是Apach Cordova Documentation,包括了API參考和其他使用時會用到的指南。
Hybrid應用框架
Cordova并不是唯一的應用框架,市場上有許多類似于Cordova或在Cordova中運行的框架,如Appcelerator的 Titanium,AT&T的Workbench和Antena Software Volt,BlackBerry的WebWorks,IBM的Worklight,Oracle的Application Development Framework Mobile,Salesforce的Touch,SAP的Mobile Plateform,Strobe(從前的SproutCore,現在屬于非死book),Tigger。
到現在對Cordova了解的已經夠多了,從下篇開始正始開始我們的Cordova開發之旅。
</div> 來自:http://segmentfault.com/a/1190000002903546
構建一個Cordova應用就是創建Web應用,把Web應用打包到原生容器中,測試并調試,發布給用戶。打包過程如下圖:
web應用不加改動地運行在原生殼中,不會生成任何原生代碼
</blockquote>Cordova程序啟動時加載web應用起始頁(一般是index.html,可以自定義),轉換成web視圖后把控制權交給web視圖。用戶與web應用交互,鏈接和js代碼能加載打包資源中的其他內容、訪問網絡并從服務器下載內容。
web視圖是渲染web頁面的原生組件
</blockquote>運行在Cordova容器中的web應用就像移動瀏覽器中的web應用。js負責實現應用邏輯,css負責實現外觀界面。
Cordova的API由兩部分實現:js庫負責把API暴露給用戶使用;容器中運行的原生代碼實現原生的API。每個項目都有一個Cordova js庫,但在每個平臺上都有各自的原生代碼實現。
Cordova應用包括了所有Cordova API的原生和js代碼,在3.0中,每個API都分成單獨的插件,這樣就可以用Cordova插件管理器添加或刪除項目中的插件。如下圖,應用使用分離的插件并且只打包用到的插件。
![]()
Cordova提供以下API:
加速器、相機、抓屏、指南針、連接、聯系人、設備、事件、文件、地理定位、全球化、程序內瀏覽器、媒體提示、閃屏、存儲開發者在應用中使用Cordova API實現應用功能,應用使用js調用API。程序里某特殊層把CordovaAPI調用轉換成合適的本地接口。如在黑莓上訪問相機的方式和安卓不 同,API通用層允許開發者使用一個接口,在每個平臺中轉換成合適的原生API,一次調用適用所有支持平臺。
如下面使用Cordova在移動應用中獲取圖像的默認API的語句:navigator.camera.getPicture(onSucess, onFail);兩個回調函數名做為參數:onSucess和onFail,在圖像捕捉成功或失敗時調用。
Cordova和PhoneGap
說起Cordova,就不能不提PhoneGap。
PhoneGap最初是2008年由一名iOS程序員創造的,最初版本也只用在iOS平臺上,而后增加了對Android的支持。并且最初的版本也只是把html頁面加載到APP中,直到2011年發布的1.0版本才加入了對API的支持,這是它的最根本優勢所在。
隨后Adobe收購了PhoneGap,緊接著又作為開源項目捐給了Apache基金會,并命名為Cordova。而Adobe將會繼續以 Cordova加上PhoneGap Build和Adobe Shadow的組合提供PhoneGap。因此PhoneGap的核心是Cordova容器,二者的區別主要在于命令行工具和PhoneGap構建服務。 PhoneGap作為Adobe的產品,集成了一些工具,可以繼續免費使用。
Cordova的未來
如果移動瀏覽器實現了本地API的調用,Cordova可能會被廢棄。但每個系統的本地API都不一樣,Cordova的優勢在于只需要寫一次調用即可方便地在各平臺調用本地API,從而保持應用良好的跨平臺性。
支持的平臺
目前支持以下平臺:
最新的支持列表請參照:http://cordova.apache.org/docs/en/3.0.0/guide_overview_index.md.html#O...。
目前除了蘋果公司,各大平臺和公司都對Cordova在本平臺上的實現和使用表現了極大的興趣。個人認為,隨著硬件和網絡的發展,在某些輕量級應用中,使用Cordova這種跨平臺解決方案可以大幅減少開發成本。
使用Cordova開始開發
讓我們再深入了解一點怎樣使用框架構建Cordova應用。
基于Cordova容器的開發
Cordova應是運行在客戶端本地應用容器的web應用。因此,運行在Cordova容器中的Html5應用的結構和傳統的基于web服務器的有 所不同。傳統的web應用中服務器端做了大部分工作,比如按照用戶請求傳回生成的內容。而Cordova這種容器中的應用本身包括了所需要的靜態頁面,用 戶請求一般由js代碼響應并與服務器交互,這樣與服務器交互的內容會比較少。并且由于html5本身的特性(如本地存儲)或容器的API,容器的應用可以 脫離服務器運行。
為Cordova應用編碼
Cordova應用使用普通的web技術如html、css和js開發。使用常用的web開發工具就可以了,如記事本,復雜一些的像Adobe Dreamweaver或者Eclispe。Adobe還有免費開源的代碼編輯器Brackets。Aptana studio是一款基于Eclispe開發但比Eclispe輕量的開源IDE。
構建Cordova應用
不論是否使用Cordova API,Cordova應用最后都會被打包成本地應用。每個平臺都有優先構建本平臺本地應用的工具,而在構建Cordova應用之前,要確保應用的web內容添加到每個平臺應用項目中,然后在使用平臺工具構建。
一些平臺開發工具只運行在特定的桌面操作系統上:Android SDK運行在Linux、Windows和Macintosh OS X;BlackBerry SDKs運行在Windows、Macintosh OS X;iOS SDK只運行在Macintosh OS X;Windows Phone SDK只運行在Windows上。例如,如果使用PC使用所有平臺開發工具,可以考慮在Windows系統中使用VMware虛擬機加載 Macintosh Mini系統。
在新版本的Cordova中刪除了舊版本中的IDE插件,使用命令行工具實現跨平臺構建任務。命令行工具可以創建項目、管理插件,構建和和在模擬器 上測試應用。PhoneGap還提供了打包云服務,服務允許上傳web應用構建應用服務器,并把應用打包到支持的平臺的Cordova容器中。
Cordova插件
Cordova提供的插件是有限的,但可以用插件擴展Cordova功能。Cordova固化了插件定義模式,在Cordova應用中管理插件,并 且核心的API也用插件實現。像非死book推出了自己的插件,推送消息的Urban Airship插件等。之后會介紹如何創建自定義插件。
支持和資源
商業公司為開源項目提供支持,這樣它們本身的業務也可以使用這些項目。Cordova也是一樣,目前最好的支持是Google Groups的PhoneGap區(http://groups.google.com/group/phonegap)。在那有一大批有經驗的開發者關注問題列表,可以快速獲得問題答案。PhoneGap Build有一個支持論壇(http://community.phonegap.com/nitobi/products/nitobi_phonegap_build)。
在線咨詢使用Cordova和PhoneGap框架的網址: