找資料時看到很多人都直接把Connect IQ簡稱CIQ,
Connect IQ是Garmin的app下載平台,所以這些平台上發佈的app都簡稱CIQ App。
昨天成功建立了一個新專案之後,對於要開發怎麼樣的錶面,暫時還沒有什麼想法,
所以我想今天就來參考看看網路上其他人都是怎麼寫的。
首先,用git把Garmin的官方示範https://github.com/garmin/connectiq-apps clone下來
git clone https://github.com/garmin/connectiq-apps.git
clone完畢之後,前往Visual Studio Code > 右上角 File > Open folder...
官方示範裡,watchfaces之中有兩個範例,我想先開TypedFace來看看
開啟folder之後,如果直接執行Run > Run Without Debugging會沒辦法執行,
像我是遇到以下錯誤
......ERROR: Invalid device id found.
......terminated with exit code: 102.
發生錯誤的原因是這個project的manifest.xml設定了很多我沒有下載的device,
此時可以把缺少的device都下載下來,也可以把<iq:product />刪到只剩你有下載的裝置
最快的方法是按快捷鍵ctrl+shift+p ,輸入>monkey c edit products
勾選適用的裝置,就會直接更新manifest.xml了
(如果沒有選項可以勾,表示你沒有下載裝置,或者下載的裝置api level太舊了不支援)
接著再重新跑一次Run Without Debugging,
仍然會出現錯誤
Invalid '$.Toybox.Lang.Dictionary{:height as $.Toybox.Lang.Float, :locX as $.Toybox.Lang.Number, :locY as $.Toybox.Lang.Float, :visibility as $.Toybox.Lang.Boolean, :width as $.Toybox.Lang.Number}' passed as parameter 1 of type 'PolyType<Null or $.Toybox.Lang.Dictionary{:height as $.Toybox.Lang.Number, :locX as $.Toybox.Lang.Double or $.Toybox.Lang.Float or $.Toybox.Lang.Long or $.Toybox.Lang.Number, :colorDepth as $.Toybox.Lang.Number, :locY as $.Toybox.Lang.Double or $.Toybox.Lang.Float or $.Toybox.Lang.Long or $.Toybox.Lang.Number, :visibility as $.Toybox.Lang.Boolean, :identifier as $.Toybox.Lang.Object, :width as $.Toybox.Lang.Number}>'.
這是因為我們使用新版本的sdk會檢查型別,而這個專案是比較早期寫好的,導致很多地方會檢查不過,
不過沒關係,只要在project內的monkey.jungle檔新增一行
project.typecheck = 0
就可以了
再跑一次Run Without Debugging
終於成功開啟別人的專案了