[Cordova] 在 Mac 上安裝 Cordova 與建立第一個 HelloWorld 專案
自己寫的 圖書館多重帳戶登入 app 是使用 HTML+CSS+JavaScript 寫的,
只是包上一個 Android 的殼,因此其實可以也複製到 iOS 上面~
沒想到這個概念很早以前就已經有人想過了,
做出了 Phonegap 這個專案,
後來又被捐獻到 Apache Foundation 變成 Cordova 專案~
不過 Phonegap 和 Cordova 的差異讓我搞不清楚好一陣子,
看一下 Phonegap 的說明文件時,有時會連到 Cordova 的文件,
然後指令又有點不同,真的是蠻困擾的…
後來看了這篇 PhoneGap 與 Cordova 的實際差異,
決定還是直接用 Cordova,比較不會出問題囉~
使用 Cordova 的動機是想把目前在 Android 上的 圖書館多重帳戶登入 app,
也複製到 iOS 上面,這樣就能同時支援 Android/iOS 了~
不過還是先按步就班,先把 Cordova 裝好,
並且確定 HelloWorld 專案可以成功執行吧~
參考資料:
Cordova: The Command-Line Interface
Cordova: Android Platform Guide
1. 準備好 Android build 環境
首先要確定電腦上可以編譯 Android 程式,
可以參考 將 eclipse 專案移轉至 Android Studio 上 這一篇,
把 Android Studio 和 Android SDK 裝好~
同時也要確定要建立至少一個 Android AVD 給模擬器使用,
而且這個 AVD 目前必須至少是使用 Android 4.0 版以上的 SDK~
依照 Cordova: Android Platform Guide 的說明,
Cordova 會把在 Google Android Dashboard 上佔有率低於 5% 的,
排除於支援範圍內~
因此 2.x 和 3.x 版本的都已經不支援了~
另外,要確定 Android SDK 中的 platform-tools 和 tools 目錄,
已經有被加入 PATH 環境變數中,
在 Mac 上可以加到 ~/.bash_profile 裡面,例如:
export PATH=~/Library/Android/sdk/platform-tools:~/Library/Android/sdk/tools:/usr/local/bin:${PATH}
加入後最好是重新開機,確保所有的程式都會吃到正確的設定~
像我只在目前的 shell 設定好 PATH,雖然 adb 等指令都可以正常執行,
Cordova 在後面步驟執行模擬器時也沒有問題,
可是 HelloWorld 程式一直沒有被裝進模擬器去,
直到我 PATH 設定在 ~/.bash_profile 裡重開機後,這問題才解決~
2. 準備好 iOS build 環境
首先要先安裝好 Xcode,到 App Store 搜尋 Xcode 後安裝,
裝好後執行一下 Xcode,確定 Xcode 已經初始化完畢~
接著要用 npm 安裝 ios-sim 和 ios-deploy 兩個套件,
如果還沒裝過 Node.js 的話,記得裝一下 (可參考這裡):
npm install -g ios-sim npm install -g ios-deploy
3. 安裝 Cordova
官方建議 用 npm 來安裝 Cordova:
sudo npm install -g cordova
4. 建立一個測試用的 Hello World 專案
建立一個子目錄後,在裡面執行下面的指令,
來建立一個 Hello World 專案:
cordova create hello com.example.hello HelloWorld
上述的指令會建立一個 hello 目錄,
接下來的指令都是要在這個 hello 目錄下執行喔~
接著要加入支援的平台,我加入了 ios 和 android:
cordova platform add ios cordova platform add android
可以執行 cordova platform 看目前已經加入的支援平台,
Cordova 還支援 Amazon FireOS,BlackBerry,FireFox OS 等等,
不過目前我還沒有想要支援它他 (畢竟我也沒手機可測,
而且那些平台目前應該不算普及):
testuser@localhost ~ $ cordova platform
Installed platforms: android 4.0.2, ios 3.8.0
Available platforms: amazon-fireos, blackberry10, browser, firefoxos
5. 執行 Hello World 程式
執行下面的指令,就可以分別把 Android 和 iOS 的模擬器跑起來,
在裡面執行 Hello World 程式:
cordova emulate android
cordova emulate ios
如果目前在 Android 模擬器那邊已經建立了多個 AVD 的話,
跑起來的可能不是我們要的那個,
可以執行下面的指令先看一下目前有的 AVD:
testuser@localhost ~ $ cordova run android --list
Available android devices:
Available android virtual devices:
Nexus_4_API_15
Nexus_S_API_8
像我想指定 Nexus_4_API_15 這個 AVD 的話,可以這麼做:
cordova run android --target=Nexus_4_API_15
下面就是 Android 和 iOS 模擬器,
分別把 Hello World 專案執行起來的畫面:
這樣子就算大功告成囉~
之後把自己的 app 搬到 Cordova 成功的話,再來分享一篇吧~