目錄
1 Cordova概述
2?Cordova環境配置(iOS)
3 Cordova集成(iOS)
4 Cordova嵌入webview使用(iOS)
5 參考文檔
1 Cordova概述
概述
Cordova前身是phonegap,而PhoneGap是Nitobi軟件公司2008年推出的一個框架,旨在彌補web和iOS之間的不足,使得web和iPhone SDK之間的交互更容易。后來又加入了Android SDK 和BlackBerry SDK,再然后又陸續加入了更多的平臺。但是在2011年,Nitobi公司被Adobe收購,PhoneGap也被提交到Apache Incubator。由于Adobe現在擁有PhoneGap商標,PhoneGap v2.0版產品就更名為Apache Cordova。
Apache Cordova是一個開源的移動開發框架。允許你用標準的web技術-HTML5,CSS3和JavaScript做跨平臺開發。 應用在每個平臺的具體執行被封裝了起來,并依靠符合標準的API綁定去訪問每個設備的功能,比如說:傳感器、數據、網絡狀態等。?
使用Apache Cordova的人群:
移動應用開發者,想擴展一個應用的使用平臺,而不通過每個平臺的語言和工具集重新實現。
web開發者,想包裝部署自己的web App將其分發到各個應用商店門戶。
移動應用開發者,有興趣混合原生應用組建和一個WebView(一個特別的瀏覽器窗口) 可以接觸設備A級PI,或者你想開發一個原生和WebView組件之間的插件接口。
架構
這是cordova應用程序的幾個組成部分。下面這幅圖是cordova應用架構的高級視圖。
WebView
Cordova啟用的WebView可以給應用提供完整用戶訪問界面。在一些平臺中,他也可以作為一個組件給大的、混合應用,這些應用混合和Webview和原生的應用組件。
Web App
這是你應用程序代碼存在的地方。應用的實現是通過web頁面,默認的本地文件名稱是是index.html,這個本地文件應用CSS,JavaScript,圖片,媒體文件和其他運行需要的資源。應用執行在原生應用包裝的WebView中,這個原生應用是你分發到app stores中的。
?這個容器中包含一個非常重要文件- config.xml文件他提供App的重要的信息和特定的參數用來影響App的工作,比如說是否響應方向的變動。
插件
插件是Cordova生態系統的重要組成部分。他提供了Cordova和原生組件相互通信的接口并綁定到了標準的設備API上。這使你能夠通過JavaScript調用原生代碼.
Apache Cordova項目維護著一組插件叫做核心插件。這些核心插件可以讓你的應用程序訪問設備功能,比如:電源,相機,聯系人等。
除了核心插件,這里還有一些第三方插件他們提供了一些附加功能,但這些功能不一定在每個平臺都能用。你可以搜索Cordova插件使用插件搜索或者npm。你也可以開發自己的插件。插件是必要的,例如Cordova和自定義原生組件之間通信。
Cordova特征
命令行界面(Cordova CLI)
這是可用于啟動項目,構建不同平臺的進程,安裝插件和許多其他有用的東西,使開發過程更容易的工具。您將在以后的章節中學習如何使用。
Cordova核心組件
Cordova提供了每個移動應用程序所需的核心組件。這些組件將用于創建應用程序的基礎,所以我們可以花更多的時間來實現我們自己的邏輯。
Cordova外掛程式
Cordova提供的API將用于實現本地移動功能到我們的JavaScript應用程序。
許可證
Cordova按照Apache許可證2.0版授權。?Apache和Apache羽毛標志是Apache軟件基金會的商標。
Cordova的優勢
Cordova為構建混合移動應用程序提供了一個平臺,因此我們可以開發一個應用程序,將在不同的移動平臺IOS,Android,Windows Phone,Amazon-fireos,黑莓,Firefox OS,Ubuntu和tizien上使用。
開發混合應用程序然后原生應用程序更快,所以Cordova可以節省大量的開發時間
由于我們在使用Cordova時使用JavaScript,我們不需要學習平臺特定的編程語言。
有大量的社區插件可以與Cordova一起使用。許多庫和框架都經過優化以便使用它。
Cordova限制
混合應用程序比本地應用程序慢,因此對于需要大量數據和功能的大型應用程序使用Cordova不是最佳選擇。
跨瀏覽器兼容性可能會產生很多問題。大多數時候,我們為不同的平臺構建應用程序,所以測試和優化可能需要很多時間,因為我們需要覆蓋大量的設備和操作系統。
某些插件與不同的設備和平臺存在兼容性問題。還有一些Cordova尚不支持的本機API。
2?Cordova環境配置(iOS)
在我們開始使用Cordova設置之前,我們需要安裝一些組件。
安裝Node.js
要安裝Cordova,需要先安裝Node.js在Node.js官網,上下載并安裝
具體參考 http://www.lxweimin.com/p/f21fdbdf47df?
安裝git
git一般不用安裝,osx和linux都自帶git,可以在命令行輸入git --version檢查一下。如果沒有git,需要到git官網(https://git-scm.com)下載安裝一個git客戶端。
使用node.js的依賴包管理工具npm來進行cordova安裝
在終端輸入命令:
sudo npm install -g cordova
3 Cordova集成(iOS)
新建項目
打開終端,切換目錄到工作目錄下,輸入以下命令,可能需要點時間來完成
cordovacreateDemocom.cordova.demo.helloHelloWorld
參數描述:
Demo(參數是必填):將為你的項目生成一個Demo目錄? ? www子目錄是應用程序的主頁,以及各種資源(css,js,img),遵循共同的web開發文件命名規范。這些資源將存儲在設備上的本地文件系統,而不是遠程服務。config.xml文件包含重要的需要生成和分發應用程序的元數據。
com.cordova.demo.hello(參數可選):App ID,如果不填寫這個參數,第三個參數就要省略,默認值是 io.cordova.hellocordova,但建議你填寫一個適當的值。
HelloWorld(參數可選):應用程序的項目名? 這個參數的默認值是 HelloCordova,但建議你填寫一個適當的值。
平臺支持
所有后續命令在項目的目錄中進行,可在該項目任何子目錄中,切換到項目目錄下:
cd Demo
在構建項目之前,你需要指定一組目標平臺。你能夠運行這些命令取決于您的機器是否支持每一個SDK,合理是否已安裝SDK。在MAC上運行命令:
cordova platform add ios
如果需要查看Cordova支持平臺以及已經添加的平臺,終端輸入命令:
? cordova platforms ls
添加插件
根據項目具體功能需要,可添加插件以簡單方便調用原生接口,如需添加插件,可以去Cordova插件庫搜索需要的插件:
cordova plugin add com.phonegap.plugins.barcodescanner
cordova plugin add org.apache.cordova.file-transfer
cordova plugin ls
并非所有的插件都是全平臺支持的,有些可能只支持安卓,也有的可能同時支持安卓和iOS,所以在多平臺開發時,請慎重選擇插件。
插件也可自定義,參考文檔?
http://cordova.apache.org/docs/zh-cn/3.4.0/guide/hybrid/plugins/index.html
插件使用,實現h5與原生交互參考文章
https://blog.csdn.net/u013929312/article/details/55045871
項目運行
一個簡單的Cordova項目就已經搭建完成了,現在,運行下工程。打開目錄下
/Users/****/Desktop/測試cordova/Demo/platforms/ios
Cordova嵌入webview使用
將Cordova本地相關文件copy到已存的項目中
進入到創建的Cordova項目的路徑中/Users/****/Desktop/Demo/platforms/ios,找到下面需要copy的4個文件夾( CordovaLib ,cordova, www, platform_www)copy到工程項目的根路徑中,如下
拷貝對應的config.xml文件到對應的工程目錄
?配置相關參數
?打開工程,進入工程TARGETS -> Build Phases 下,然后入下圖所示,點擊①中的按鍵,創建New Run Script Phase,②為創建的Run Script:
將下圖示意圖中,①原名稱Run Script修改為Copy www directory;然后講②中的選項去掉,最后將下面的代碼字段復制到③中:
NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js ?
?在工程 Build Settings -> Other Linker Flags 中添加-ObjC -all_load
Add Files to ... -> CordovaLib.xcodeproj
?Add Files to ... -> config.xml
Add Files to ... -> www文件夾
Schemes按照下圖配置,然后編譯一次程序(command+R),最后導入下面兩項
Build Phases -> Target Dependencies -> CordovaLib
Build Phases -> Link Binary With Libraries -> libCordova.a
Schemes按照下圖配置,將"ViewController.h" 文件改為:
#import?<Cordova/CDVViewController.h>
#import <Cordova/CDVCommandDelegateImpl.h>
#import <Cordova/CDVCommandQueue.h>
@interface ViewController : CDVViewController
@end
運行程序就可看到工程中wwww文件目錄下,index.html文件中的網頁信息了。只需要將該文件內容,改為公司需要的網頁內容即可。
參考文檔
http://cordova.axuer.com/docs/zh-tw/6.x/guide/platforms/ios/index.html (iOS官方集成文檔)
http://www.lxweimin.com/p/90605320bb28 (在已有項目中集成cordova和自定義插件的使用)