本文承接上篇《Cordova開發前的準備工做》。css
每一個Cordova支持的移動平臺的框架文件中都有建立新項目、測試和調試應用的腳本。但它們都是平臺專用的,不能用在跨平臺的場景上。而CLI就是爲了解決這一問題開發的。接下來講明如何使用CLI。html
Cordova應用本質上是web應用,每一個移動平臺使用不一樣的IDE和項目結構。Cordova之前的版本,開發者建立爲每一個移動平臺建立一個項目,再把web應用內容在項目間來回複製。在3.0之後還把Cordova API都遷移到了插件中。管理Cordova項目、Web內容和安裝的插件都很困難。從3.0開始(在2.7發佈過預覽版),項目添加了CLI,它提供一套命令給開發者使用:node
恰當使用這些命令,開發者能夠管理Cordova應用開發的整個生命週期。android
Cordova正常狀況下執行命令後不會顯示任何信息。若是想查看命令在執行過程當中哪裏出了問題,可使用-d或--verbose參數開啓冗長模式。開啓後能夠看見命令執行過程的每一步的狀態。其中一些信息由CLI自己提供,另一些由CLI調用的第三方工具產生。ios
先大致瞭解一下CLI命令:git
Help:顯示可用CLI命令的信息。
Create:建立Cordova項目並關聯項目文件夾和文件。
Plateform:管理Cordova項目使用的移動平臺。
Plugin:管理Cordova插件的安裝和卸載。
Prepare:從Cordova項目的www文件夾複製web應用內容到項目移動平臺項目文件夾中。
Compile:把web應用打包成Cordova應用。
Build:先執行Prepare命令而後打包web應用。
Emulate:在一個或多個移動設備平臺的設備模擬器中運行Cordova應用。
Run:在一個或多個移動設備中運行Cordova應用。
Serve:啓動一個服務器加載web內容以便於用瀏覽器訪問。web
要詳細瞭解CLI使用的命令,包括命令機制和每一個命令的執行過程。要了解CLI可使用哪些命令,打開Windows命令窗口或相似的程序,輸入shell
cordova help
檢查CLI版本:apache
cordova -v
或者windows
cordova -version
開發前要建立一個項目。create命令用來建立新項目。打開命令行窗口進入要建立項目的文件夾,輸入如下命令:
cordova create project_name
這樣就建立了一個簡單的Cordova項目結構和一些Web內容文件。也能夠用如下命令明確指定應用ID和應用的名字:
cordova create project_name app_id app_name
這個命令還把應用ID寫進應用的配置文件,而且有了一個和項目名字不一樣的應用名字,如項目文件夾叫myapp而應用名字叫Hello,能夠這麼寫:
cordova create myapp com.cordovaprogamming.hello hello
注意命令執行完並不顯示發生了什麼,執行完就返回到命令行。建立項目時,CLI建立了一個默認的HelloWorld頁面。
全部的Cordova CLI命令都要在建立好的項目文件夾中執行,即用CLI執行的項目操做都要在create建立的項目文件夾中指行。
建立的項目結構以下圖。這種項目結構便於跨平臺處理。注意www文件夾單獨被拿出來,這樣就能夠在多個移動平臺上共享同一個web應用。
在之前的版本中項目文件夾中有merges文件夾,用來單獨存放不一樣平臺上不一樣的資源文件(如html、css、js、圖像和視頻文件等)。最近的版本去掉了它,增長了hooks文件夾(可替代merges文件夾的做用)。hooks文件夾用於存放一些腳本代碼(如node.js、shell),用來自定義CLI命令,從而擴展Cordova CLI框架。關於Cordova hooks的詳細使用請參考hooks文件夾中的readme.md。platform文件夾中放置每一個移動平臺的文件夾。plugins文件夾存放應用使用的插件的源碼。
Cordova CLI的不會事先準備好全部要使用的文件,它使用了一種叫延時加載的處理方法,在建立項目和向項目添加平臺支持時下載所須要的文件。CLI用一個叫.cordova的文件夾存放延時加載下載的文件,在windows系統中通常位於用戶主目錄下(c:\users\user_name)。在建立項目時的下載過程當中若是出現問題,能夠先用-d參數下載了哪些文件,若是CLI報告已下載過並跳過下載,查看.cordova中是否真的有這個文件。若是沒有請whack這個空文件夾並重試。
新建立的項目文件夾中只有一些空文件夾,還不支持任何移動設備平臺。platform命令就是用於管理應用中的項目文件的。
打開命令行窗口進入Cordova項目文件夾,輸入如下命令添加某個移動設備平臺,固然要提早安裝好平臺開發工具(如Android SDK):
cordova platform add platform_name
若是要嚮應用中添加Android項目,能夠這麼寫:
cordova platform add android
若是在一行命令中添加多個平臺項目,能夠這麼寫:
cordova platform add android blackberry ios
執行命令後,會在項目根目錄的platform文件夾中生成平臺項目文件夾,能夠用相關IDE導入使用(如Android使用安裝ADT的Eclipse)。
CLI能夠查看Cordova項目中已經存在的平臺的列表。在平臺根目錄中輸入如下命令之一查看:
cordova platforms cordova platform ls cordova platform list
CLI用JSON格式返回每一個平臺的名字,形如:
['android', 'ios', 'blackberry10']
這個命令的主要用於一些自動化處理中。它返回的JSON結果可用於Node.js應用,解析後肯定是否缺乏某平臺。
使用以下命令刪除:
cordova platform remove platform_name
或使用remove的簡寫rm:
cordova platform rm platform
插件管理是CLI重要功能之一。CLI負責複製plugin文件和修改配置文件,不用手工操做。
在命令行窗口中進入項目文件夾,輸入如下命令:
cordova plugin add path_to_plugin_files
例如添加相機插件可使用以下命令:
cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-camera.git
這樣就鏈接到了Apache Git並下載最新版本的插件。Cordova核心API插件列表位於http://cordova.apache.org/docs/en/3.0.0/guide_cli_index.md.html#The%20...。
Apache在插件位置是以下形式,尖括號中的plugin-name指插件名,通常知道了地址,CLI均可如下載下來:
https://git-wip-us.apache.org/repos/asf/cordova-plugin-<plugin-name>.git
若是是第三方插件或存在本地的自定義的插件,可使用以下命令安裝,your_location指本地存儲路徑:
cordova plugin add your_location
使用CLI是向項目安裝插件的惟一方法。以前版本要開發者手工複製並修改配置文件。若是在3.0及之後的版本使用這種方法可能會破壞Cordova項目。
3.1版本之後能夠直接用插件名安裝,CLI會在插件倉庫中檢查與名字匹配的插件並下載安裝到項目中。例如要添加console插件,在項目文件夾下使用以下命令:
cordova plugin add org.apache.cordova.console
添加的插件位於項目根目錄的plugins文件夾中,插件名的命名空間使用Reverse-DNS命名慣例再加上插件名,例如Cordova核心插件使用*org.apache.cordova.core加上插件名的命名方式。這種命名方式減小了不一樣組織間類似插件的命名衝突的可能性。
插件對每一個支持的平臺有各自存放的文件夾。另外Cordova應用使用的JavaScript文件放在www文件夾中。關於插件更多的狀況咱們放在後面更詳細的去了解。
使用以下命令查看在Cordova項目中插件列表,打開命令行窗口進入項目文件夾:
cordova plugins
CLI將以JSON數據形式返回結果,如:
['org.apache.cordova.core.camera', 'org.apache.cordova.core.device-motion', 'org.apache.cordova.core.file']
使用以下命令刪除插件,打開命令行窗口進入項目文件夾:
cordova plugin remove plugin_name
或者使用remove的簡寫形式rm:
cordova plugin rm plugin_name
刪除過程是安裝過程的反向操做,它把配置文件中指向插件的配置文件說明刪除並把插件文件夾從項目文件夾中刪除。
CLI內置整合了移動平臺SDK,可使用CLI管理應用構建過程。
CLI的prepare命令把Cordova項目的web應用內容從www文件夾複製到適當的平臺文件夾中。每次改動web內容後都要使用這個命令。prepare命令由接下來要介紹的許多命令自動調用。
打開命令行工具進入項目文件夾輸入如下命令:
cordova prepare
能夠爲指定平臺執行準備工做,命令以下:
cordova prepare platform_name
compile命令經過調用項目平臺文件夾中的構建腳本初始化編譯過程。
打開終端窗口進入平臺文件夾輸入如下命令使用compile命令:
cordova compile
編譯某個平臺:
cordova compile platform_name
build命令和compile命令類似,只之在執行編譯前先調用prepare命令。
打開終端窗口進入平臺文件夾輸入如下命令:
cordova build
編譯某平臺:
cordova build platform_name
CLI內在關聯了移動平臺模擬器,能夠在模擬器或物理設備上直接運行Cordova應用。以後會詳細介紹模擬器的配置和加載,從CLI使用物理設備都須要什麼。先對相關命令大概看一下:
emulate命令自動執行了構建處理過程並把應用部署到設備模擬器上。它首先要準備應用,執行構建處理過程,把生成的應用程序包部署到模擬器。
在項目中配置的每一個平臺的默認模擬器上運行Cordova應用,使用以下命令:
cordova emulate
在單獨的設備模擬器上模擬運行,如android,使用以下命令:
cordova emulate android
run命令自動執行應用的構建過程並部署到物理設備。命令首先作準備工做,執行構建處理過程而後把應用包部署到鏈接的設備。
要在項目中配置的每一個平臺上運行Cordova應用,使用以下命令:
cordova run
在某個設備上,如android設備,使用以下命令:
cordova run android
web應用在移動設備上使用前,先在桌面瀏覽器測試。這一點對Cordova應用尤爲重要,由於在移動設備上使用前還有一個打包過程。
使用server命令能夠加載一個本地服務器,寄宿了某個平臺的web內容。它不向瀏覽器開放Cordova API,全部的測試都針對Web UI進行。在測試前使用prepare命令確保web內容保持最新狀態。
在命令行窗口進入項目文件夾輸入如下命令:
cordova serve plat_form
如在服務器中運行Cordova項目的Android平臺web應用內容:
cordova serve android
命令加載後,會顯示一個URL用於在瀏覽器上訪問。端口默認使用8000,要使用不一樣的端口使用以下命令:
cordova server android 8080
到此爲止,咱們隊Cordova的自動化構建和測試工具CLI的使用有了一個比較詳細的瞭解。下一篇咱們以項目自帶的Hello World程序爲例剖析Cordova項目。