Cordova概述

jopen 9年前發布 | 50K 次閱讀 Cordova 移動Web開發框架 移動開發

概述

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

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

    構建一個Cordova應用就是創建Web應用,把Web應用打包到原生容器中,測試并調試,發布給用戶。打包過程如下圖:

    Cordova應用打包過程

    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插件管理器添加或刪除項目中的插件。如下圖,應用使用分離的插件并且只打包用到的插件。
    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
    • </ul>

      最新的支持列表請參照: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框架的網址:

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!