[注意事項] Corona 改名為 Solar2D。
本文介紹如何建置開發 Solar2D (原 Corona SDK) 應用程式,已經有經驗的開發者可直接到官網下載 Solar2D 主程式即可。建置的過程分為以下數個步驟:
- (選擇性) 安裝 Lua
- 安裝 Solar2D
- 安裝編輯器或 IDE
- (選擇性) 程式碼重排工具
- (選擇性) 靜態程式碼分析工具
- (還擇性) 編譯自動化工具
本文將逐一說明。
(選擇性) 安裝 Lua
雖然 Solar2D 應用程式是以 Lua 寫成,但我們不需要安裝 Lua 直譯器,因 Solar2D 主程式中即內嵌 Lua 直譯器。在這裡,安裝 Lua 直譯器僅是為了安裝一些協助開發的工具,不是必需的步驟。筆者在這裡已說明如何安裝 Lua,有需要的讀者可自行前往觀看。如果讀者要練習 Lua 的語法,記得要以 5.1 版為目標來練習 (看這裡)。
如果讀者使用 Windows 開發 Solar2D 應用程式,比較建議直接安裝 LuaRocks,該連結的安裝包就附帶 Lua 直譯器 (5.1 版) 和 LuaRocks 程式了。Lua 和 Python 不同,Lua 的套件數量很少,以開發 Solar2D 應用程式來說,我們只會用到幾個開發工具,其他的套件不會用到。
下載該套件後,解壓縮,執行以下指令:
C:\path\to\luarocks> .\install.bat /L
這行指令的意思是用該壓縮包內附的 Lua 直譯器,使用此指令即可安裝 LuaRocks。
安裝 Solar2D
Solar2D 可在 Windows 或 Mac 運行。到 Solar2D 官網 下載主程式後,點擊主程式後按照其指示安裝即可。如果要編譯 Android 程式,需要另外安裝 JDK (Java SE Devekopment Kit),經測試,Oracle JDK 或 Zulu (OpenJDK) 皆適用。經測試,只能使用 Oracle JDK,不能使用 OpenJDK。
要注意 Solar2D 不能裝在虛擬機器內,這是因為 OpenGL 支援的議題,經筆者實測也的確如此。
由於 Apple 公司的政策,目前只能在 Mac 系統上編譯 iOS 程式。如果有心要前往 Android 和 iOS 雙平台來發展的話,目前來說,還是需要 Macbook 或 iMac。Solar2D 官網並沒有提到硬體規格,應該是能跑 OS 10.11 和 Xcode 的主機皆可 (看這裡)。如果真的很少用 Mac 的話,可以租賃雲端 Mac 主機,像是 MacInCloud 或是 XCLOUD 等。
附帶說明,初期只用 Corona 模擬器的話,可離線使用 Corona,但要將 Corona 專案編譯成實際的應用程式 (像 Android 平台的 APK 檔) 時系統需保持一小段時間的連線狀態。現在的 Solar2D 已經不使用雲端編譯了,只要在本地端建立好開發環境即可。
安裝編輯器或 IDE
Solar2D 本身沒有內建的編輯器或 IDE,使用者需另外安裝。運行 Solar2D 模擬器和編輯 Lua 程式碼是分開的,只要選擇能編輯 Lua 程式碼的編輯器或 IDE 即可。以下是常見的選項:
- ZeroBrane Studio
- Visual Studio Code
- Sublime Text + Corona Editor
- Notepad++ (限 Windows)
ZeroBrane Studio 是撰寫 Lua 程式碼時常見的選項,由於這套 IDE 有整合 Solar2D,只要設好 Solar2D 和專案路徑,可以直接從該 IDE 呼叫 Solar2D 模擬器,感覺和用內建 IDE 相去不遠。另外,ZeroBrane Studio 還有一些輔助開發的特性,有興趣的讀者可到該 IDE 官網看看。
Visual Studio Code 則是近幾年很紅的編輯器,在某些語言中搭配適當的外掛,可達到類似 IDE 的效果。這套編輯器也支援 Lua,且透過 vscode-lua 可支援後文所討論的一些開發工具。但這套編輯器對 Solar2D 的整合則沒 ZeroBrane Studio 那麼緊密。由於 VS Code 泛用性比較好,也是可考慮的選項。
以下是使用 Visual Studio Code 編輯 Solar2D 專案的示意圖:
Corona Editor 是 Corona 官方推出的 Sublime Text 外掛,但筆者先前試用時,發現輸入中文會有一些問題,就未繼續使用。喜歡 Sublime Text 的讀者可以嘗試看看。
Notepad++ 是 Windows 上的編輯器,對 Lua 的支援比較沒那麼豐富,大概就是語法高亮 (syntax highlighting),喜歡輕量級工具的讀者可試看看。
(選擇性) 程式碼重排工具
有些程式人會手動排程式碼,但這是相當機械化的工作,最好交由自動化工具來處理,在團隊中也有利於統一風格。以 Lua 來說,可使用 luaformatter 來自動排程式碼。使用 LuaRocks 即可安裝此套件:
$ luarocks install formatter
$ luarocks install checks
註:LuaRocks 在安裝 formatter 套件時會漏掉相依的 checks 套件,需自行補上。
如果在 Windows 系統上用前述的 LuaRocks 包的話,要在 Visual Studio 2017 Developer Command Prompt (x86) 內的終端機環境安裝,因為有部分套件會用到 Visual C++ 來編譯其中的 C 程式碼。
註:安裝時可能需要管理者權限。
在命令列使用 luaformatter
:
$ luaformatter path/to/source.lua
註:luaformatter
的參數可指定多個檔案。
預設情形下,會將結果傳到標準輸出,用 -a
參數可直接修改檔案,另外還有其他參數可微調程式碼風格 (用 --help
觀看相關說明)。
(選擇性) 靜態程式碼分析工具
由於 Lua 是動態型別程式語言,有些程式的錯誤要在執行期才會發現,程式寫大一些後,這樣的特性使得程式不易除錯。除了撰寫測試程式外,使用靜態程式碼分析工具 (static code analyzer) 也是找出程式碼錯誤的方法。以 Lua 來說,可以用 luacheck 來檢查 Lua 程式碼。用 LuaRocks 即可安裝此軟體:
$ luarocks install luacheck
使用方式如下:
$ luacheck path/to/source.lua
註:luacheck
的參數可指定多個檔案。
(還擇性) 編譯自動化工具
前述的程式碼重排工具和靜態程式碼分析工具皆是命令列工具,每次都要手動輸入指令的話,會使得開發流程變得繁瑣,比較好的方式是藉由一些自動化工具來減少輸入指令的動作,像是 GNU Make 等。基本上,Makefile 只是用來呼叫命令列工具的設定檔,不用寫得很漂亮,一個假想的範例如下:
.PHONY: all check format
all: check format
check:
luacheck path/to/source.lua
format:
luaformatter path/to/source.lua
之後,我們只要在專案的根目錄輸入 make
指令,系統即會依序檢查和重排 Lua 程式碼,也可以進一步將 make
指令設到編輯器的快捷鍵,藉此減少輸入的指令量。如果想學 GNU Make 的用法,可參考這裡。
我們這裡以 GNU Make 為例,但讀者不一定要用這套軟體來自動化,如果讀者想用 CMake、Rake 或其他軟體也可以,Solar2D 專案本身沒有包含這個部分,這是我們外加上去的。