跨平臺框架Cordova 命令列簡介(CLI)
這一節,我們將看到如何通過Cordova命令列(CLI)建立新的專案,針對不同平臺進行編譯,並利用模擬器或真實裝置進行測試。CLI是跨平臺工作方式的主要工具。
當然,你也可以利用CLI進行一些專案的初始化工作,比如建立初始程式碼等等。稍後,你就可以針對不同平臺提供的SDK進行持續開發。
以下我們以Windows下Android應用開發為例。
前提條件
1) JDK
設定環境變數:
JAVA_HOME= C:\Program Files (x86)\Java\jdk1.8.0
Classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
注意:
具體路徑根據你安裝選項而定。
2) Apache Ant
設定環境變數:
新建ANT_HOME=C:\ant193
Path中新增:%ANT_HOME%\bin;
3)Android SDK
執行命令列工具之前,你應該確保你已經安裝了目標平臺所需的SDK。以Android為例,我們可以到以下網址下載一個安裝套件:
點選頁面右側的“Download the SDK ADT Bundle for Windows”下載安裝。
當然你也可以逐個下載和配置,不過針對初學者我推薦下載上面的安裝套件,省時省力。
其他平臺的SDK,請參照官方文件:
注意:
請把SDK的路徑新增到系統環境變數Path中去,總共兩個。比如d:\adt-bundle\sdk\tools和d:\adt-bundle\sdk\platform-tools
4)安裝Node.js
提示:
64位版的我試了很多次,都無法安裝Cordova,暫時不清楚原因。
32位版的下載後安裝正常。
5)安裝Cordova
安裝Node.js後,命令列執行以下語句:
npminstall -g cordova
耐心等候直至安裝完成。
建立應用程式
命令列,切換到你的專案工作目錄,執行以下語句建立HelloWord應用:
cordovacreate hello com.example.hello HelloWorld –d
耐心等待直至命令完成。
第一個引數hello,指定目錄名稱。
第二個引數com.example.hello類似C#的名稱空間,或Java的包名。(不太確定,讀者自行鑑別,原文寫的是a reversedomain-style identifier)
第三個引數指定了應用程式的顯示標題。
完成後可以檢視Hello目錄及其子目錄結構。
新增特定平臺支援
注意,以下所有命令都要在專案根目錄下執行(用cd命令進入)。
首先,你需要新增你所需要支援的平臺,比如:
cordovaplatform add android
cordovaplatform add ios
注:貌似ios開發只能在Mac機器上進行,所以上面的add ios不會出現在Windows機器上。
完成後執行以下命令檢視:
cordovaplatfrom list
如果以後需要移除Android平臺支援,可以執行:
cordovaplatform rm android
執行platform add或platform rm命令會影響專案目錄下的內容。每一個被新增的平臺會在專案根目錄下的platform下產生一個對應平臺的子目錄。你可以看到各個平臺下也存在www目錄,比如platforms\android\assets\www。因為CLI會不斷的複製專案根目錄下的www中的內容,所以你應確保不要對平臺下的www目錄中的內容進行修改。如果你實在有這個需求,請參照本章末尾的“Merges目錄”。
警告:
如果你使用CLI管理你的專案,請儘量不要更改platforms目錄下的任何內容,除非你有明確的把握知道你在做什麼。這是因為該目錄下的內容會在一些條件下被覆蓋。
如果你希望此時能通過針對特定平臺的SDK(比如Eclipse)來進行開發,你應該開啟那些位於platforms子目錄下的內容。這是因為平臺相關的一些配置資訊是儲存在platforms特定子目錄下的。
編譯應用程式
預設情況下,cordova create指令碼將建立一個非常簡單的基於Web的應用程式。
執行以下命令編譯應用程式:
cordovabuild
或
cordovabuild android //只針對Andorid平臺編譯
如果最終提示:BUILD SUCCESSFUL,則編譯成功。
實際上build命令對應於以下兩個命令:
cordovaprepare android
cordovacompile android
這意味著你可以僅執行prepare命令,然後用SDK開發環境去另外編譯。
模擬器中測試
開啟Eclipse,選擇選單New->Project->Android->AndroidProject From Existing Code,選擇專案根目錄為hello\platforms\android,並確保hello和hello-CordoraLib兩個專案均被選中。(需要選中hello-CorodoraLib專案是因為這個專案將取代傳統的.jar檔案)
如果專案名上有紅色的叉叉,則代表有未解決的問題。此時可以嘗試:
1) 專案名上點選右鍵,選擇Properties。
2) 選中左側導航欄中的Android。
3) 在右側選中對應的目標平臺。比如Android4.4。
4) 點選OK。
稍後,在Eclipse中啟動Android SDK Manager。如下圖:
開啟Manger後,點選選單Tools->Manage AVDs…,然後點選Device definitions欄,如下圖:
選擇一個你想要的模擬器,然後點選Create AVD,接受預設設定即可。完成後你將在列表中看到新建的模擬器。
在列表中選中模擬器,點選窗體右側的“Start”按鈕啟動模擬器(啟動提示視窗中點選Launch即可)。
專案名稱上點選右鍵,選擇Run As->Android Application,然後耐心等待模擬器載入。
如果你的CPU支援虛擬化技術,你可以參照相關文件進行設定以提高模擬器執行效率。
載入後你就可以通過操作模擬器看到你的第一個Android程式,如下:
或者你也可以在命令列中執行以下命令啟動模擬器:
cordovaemulate android
新增外掛支援(原文:Add Plugin Features)
如以上我們看到的,Cordova預設提供的程式介面和功能非常簡單。當然你可以根據你的需要,執行標準Web開發技術對頁面進行設計。但是當你需要和不同的裝置進行通訊互動時,你就需要藉助於一些外掛,以便能夠訪問Cordova提供的核心API。
一般來說,你新增一個外掛的目的是為了利用Cordova的API訪問裝置。詳細的可用外掛列表你可以在社群中看到(http://plugins.cordova.io/)。當然你也可以自定義自己的外掛。
你可以用CLI搜尋可用的外掛,比如:
cordovaplugin search bar code
你可以通過以下命令安裝外掛,比如:
cordovaplugin add org.apache.cordova.device //裝置API
cordovaplugin add org.apache.cordova.network-information //網路(事件)
cordovaplugin add org.apache.cordova.battery-status //電池(事件)
cordovaplugin add org.apache.cordova.device-motion //加速器
cordovaplugin add org.apache.cordova.device-orientation //羅盤
cordovaplugin add org.apache.cordova.geolocation //定位
cordovaplugin add org.apache.cordova.camera //攝像頭
cordovaplugin add org.apache.cordova.media-capture //媒體檔案處理
cordovaplugin add org.apache.cordova.media //媒體檔案處理
cordovaplugin add org.apache.cordova.file //檔案訪問
cordovaplugin add org.apache.cordova.file-transfer //檔案傳輸
cordovaplugin add org.apache.cordova.dialogs //對話方塊
cordovaplugin add org.apache.cordova.vibration //震動
cordovaplugin add org.apache.cordova.contacts //聯絡人
cordovaplugin add org.apache.cordova.globalization //全球化
cordovaplugin add org.apache.cordova.splashscreen //閃屏
cordovaplugin add org.apache.cordova.inappbrowser //開啟新的瀏覽器視窗
cordovaplugin add org.apache.cordova.console //除錯控制檯
你可以用以下命令檢視所有已經安裝的外掛
cordovaplugin ls
使用以下命令刪除外掛:
cordovaplugin rm org.apache.cordova.console
Plugin add高階選項
上面的安裝方式是從registry.cordova.io庫中按照id獲取外掛,這是一個非常通用的做法。你可以在安裝時指定版本,比如:
其中的latest表示獲取最新版本。中間用@分隔。
如果外掛不是在預設庫中,而是在其他地方,則你可以指定URL:
當然你需要先安裝git。
Merge目錄
前面提到,一般情況下最好不要修改各自平臺下的www目錄下的檔案。但是如果你確實需要為某個平臺定製一些內容,又該怎麼辦呢?
專案根目錄下有一個merges目錄。我們以一個例項來講解:
1) 修改www\css目錄下的index.css檔案,設定event.received的樣式為紅色: background-color:#FF0000;
2) 修改platforms\android\assets\www\css中的index.css檔案,設定.event.received的樣式為藍色:background-color:#0000FF;
3) 在merges\android目錄下新建一個css目錄。
複製www\css中的index.css檔案到該目錄下。
修改該目錄下的index.css檔案中的.event.received的樣式為綠色:background-color:# 00FF00;
模擬器中執行,你會發現最終呈現的結果為綠色。由此我們可知:
1) Merges目錄中沒有對應檔案時,platform下的檔案會被跟目錄(www)下的檔案覆蓋。(即:如果Merges目錄中不存在index.css檔案,最終顏色將為紅色)
2) Merges目錄中存在對應檔案時,platform下的檔案會被merges下的檔案覆蓋。可見Merges目錄主要用於為平臺定製功能。
幫助命令
通過以下命令檢視幫助資訊:
cordovahelp
更新命令
以下語句更新cordova:
npmupdate -g cordova
cordova更新完成後,你還需要更新專案:
cordovaplatform update android
注意:
因為各版本之間差異較大,執行更新時請事先仔細閱讀官方文件,以免發生資料丟失或錯誤。