Cordova概述

概述

Cordova是開源免費的用Html 5構建跨平臺移動應用的框架,用來構建Hybrid應用。它實現了一套API,使應用有使用移動設備的能力。Cordova框架有如下組成部分:css

  • 每一個支持的移動端設備平臺的原生應用容器源碼,容器渲染HTML 5應用。
  • 容器裏有一組API使Web應用能訪問原生設備。
  • 一套管理工具,管理應用的建立、管理插件、構建原生應用,並在移動設備模擬器和仿真器上測試

構建一個Cordova應用就是建立Web應用,把Web應用打包到原生容器中,測試並調試,發佈給用戶。打包過程以下圖:html

Cordova應用打包過程

web應用不加改動地運行在原生殼中,不會生成任何原生代碼html5

Cordova程序啓動時加載web應用起始頁(通常是index.html,能夠自定義),轉換成web視圖後把控制權交給web視圖。用戶與web應用交互,連接和js代碼能加載打包資源中的其餘內容、訪問網絡並從服務器下載內容。程序員

web視圖是渲染web頁面的原生組件web

運行在Cordova容器中的web應用就像移動瀏覽器中的web應用。js負責實現應用邏輯,css負責實現外觀界面。apache

Cordova的API由兩部分實現:js庫負責把API暴露給用戶使用;容器中運行的原生代碼實現原生的API。每一個項目都有一個Cordova js庫,但在每一個平臺上都有各自的原生代碼實現。瀏覽器

Cordova應用包括了全部Cordova API的原生和js代碼,在3.0中,每一個API都分紅單獨的插件,這樣就能夠用Cordova插件管理器添加或刪除項目中的插件。以下圖,應用使用分離的插件而且只打包用到的插件。
3.0後的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,從而保持應用良好的跨平臺性。


支持的平臺

目前支持如下平臺:

  • Android(Google)
  • bada (Samsung)
  • Black Berry 10(BlackBerry)
  • iOS(Apple)
  • Firefox OS
  • Tizen(Linux Foundation)
  • WP 7 和 WP 8
  • Windows 8

最新的支持列表請參照: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也用插件實現。像Facebook推出了本身的插件,推送消息的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框架的網址:

最基本的仍是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,如今屬於Facebook),Tigger。


到如今對Cordova瞭解的已經夠多了,從下篇開始正始開始咱們的Cordova開發之旅。

相關文章
相關標籤/搜索