本文旨在更新《超圖解物聯網IoT實作入門》10-3頁,「設置Cordova的Android開發環境」單元,主因是Google不再單獨提供圖形操作介面版的“SDK Tools Only(僅SDK工具)”,如果需要圖形操作介面,必須下載完整的Android Studio開發工具。
由於筆者現役的筆電是用了三年多的Surface Pro(第一代),SSD硬碟容量僅有128GB,所以我從未在這台筆電安裝Android Studio(參閱下一篇文章介紹)。
設置Cordova的Android開發環境所需軟體
底下是本篇文章所使用的軟體和版本:
- Apache Ant 1.10.1
- Java SE Development Kit (JDK) 8 Update 144
- Android SDK(僅SDK工具)25.2.3
- Apache Cordova 7.0.1
其中的Ant, JDK和Cordova的安裝過程和書本裡的描述一樣,如果你之前已經安裝過Ant和JDK,就不必重新安裝。Android SDK 25.2.3可從TechSpot網站下載(因為Google已經不提供了),筆者也將Windows, Mac和Linux版上傳到Google Drive雲端硬碟的這個位址備用。
安裝Android SDK 25.2.3
Android SDK 25.2.3是個ZIP壓縮檔,以Windows版為例,檔名為tools_r25.2.3-windows.zip,它沒有安裝程式,請將裡面的tools資料夾解壓縮到你的用戶名稱底下的Android資料夾:
設定系統環境變數
請將ANDROID_HOME的環境變數值,原本是:
C:\Users\用戶名\Android\android_sdk
改成;
“C:\Users\用戶名\Android”:
如下圖所示:
tools和platform_tools路徑不變,底下是筆者電腦裡的Path環境變數的部份內容:
其中的%appdata%\npm是Node.js的npm所在路徑,如果你在命令提示字元執行npm指令時,系統回報找不到命令之類的錯誤,請將此路徑加入Path變數。%appdata%是Windows的系統變數,等同這個路徑:“C:\Users\用戶名\AppData\Roaming”。
啟動SDK Manager(SDK管理員)
Android SDK管理員改成在命令提示字串視窗中,透過android sdk命令啟動:
SDK管理員的操作方式和書本10-9頁的說明一樣。
新增Cordova Android平台與編譯Android App
請先依照10-14頁的說明,建立一個Hello專案,接著替此專案新增Android平台,如10-16頁所示:
在筆者撰寫本文時,上述命令安裝的是Cordova Android 6.2.3平台,這個版本可搭配Google最新的Android SDK工具來編譯App,但是,它並不支援舊版的SDK工具。如果執行build參數編譯Anroid App,將出現底下「找不到建立Android所需的Gradle程式(Could not find an installed version of Gradle)」錯誤訊息:
解決方法是安裝Android 6.1.x平台版本。請先移除既有的Android平台,然後再新增Android 6.1.x平台:
或者用update(升級)參數,把既有的平台改成6.1.x版:
上述兩段命令,都將新增Android 6.1.2版。不同Android平台版本的主要差異在於支援的Android API不同,例如,Cordova Android 6.0.0完整支援API 24,而6.1.0開始支援API 25,這兩個API分別對應代號Nougat(牛軋糖)的Android 7.0和7.1系統。
有關Apache Cordova工具以及平台版本的發布訊息,可參閱Cordova官方部落格。
改用6.1.x版之後,就能成功編譯Android App了。倘若編譯階段出現底下的「你尚未接受SDK授權條款(You have not accepted the license agreements of the following SDK components)」的錯誤訊息:
代表你的SDK工具尚未安裝對應的API版本(此例為API 25),請參閱10-18頁說明,在SDK管理員中安裝:
再次編譯Android就能成功了。
感謝老師的教學
之後我重新開始,他好像自動下載了什麼就可以用run了 = =
另外想請教老師開發cordova是怎麼在手機上debug的
因為沒有像是chrome開發者工具可以用console
如果老師工作繁忙可丟些關鍵字給我小弟自己去爬文感謝> <
感謝告知!其實,只要查詢debug Cordova Android關鍵字,即可找到相關文章。
thanks,
jeffrey
老師:您好
有沒有cordova-plugin-ble-central程式範例可連接arduino bluetooth low energy?
cordova-plugin-ble-central程式範例當中的”rfduinoLedButton”,就是用Arduino。
thanks,
jeffrey