今まで3.1.9を使っていた。
つい最近Descent Mk2/Mk2iが発表・発売されることとなり、ダイコンとしてちょっと気にはなっているその機種の開発にも対応したかったので3.2系統にSDKをバージョンアップすることにした。
実際3.2系統にバージョンアップした際に、いろいろトラブルがあったのでそれをちょっと記載する。
3.2へのバージョンアップ
当初は、エクリプスのSDKマネージャーで最新版をダウンロードしようとしたのだが、3.2台のダウンロードができなかった。
Connect IQのフォーラムなどを見たところ、3.2台でダウンロード関連の仕組みが変わったようで、外部アプリ(sdkmanager.exe)が起動され、そこで行われるようになったらしい。
このため、再度SDKをダウンロードする必要が出た。
SDKダウンロード
Connect IQのSDKダウンロードサイトより、3.2のSDKをダウンロードし中身を確認したら、以下のような構成だった。
3.1までは以下のような構成だったと思う。(これは2.3.2のものだが、同じだと思う)
3.1まではSDK本体をzipでダウンロードさせる形式だったのだが、3.2からはダウンロードマネージャーという実行形式で行わせるようになったようだ。
環境の設定
sdkmanager.exeを起動すると、以下のような感じで設定が進んでいく。
- 使用許諾の確認
- SDKマネージャーへのログイン
Loginを押すと、ログイン・パスワードを指定する画面が出てくる。
この画面に、SDKダウンロード時にアカウント登録したものを入れる。 - SDKのダウンロード確認画面
- ダウンロード画面続き
- SDKマネージャー画面
この画面で、SDKのダウンロードと、使用するSDKを指定することになる。
続いてエクリプス側の設定になるが、こちらはConnect IQのWEBページ通りに進めれば特に問題はないと思う。
エクリプス側の設定
エクリプス側の設定を見ると以下のような画面が出る。
SDKがある場所とSDKマネージャーのある場所を設定画面で指定できるようになっていた。
3.2以降は、SDKマネージャーでダウンロードされるファイルの格納先は、
- %APPDATA% \Roaming\Garmin\ConnectIQ\Sdks
に固定されてしまうようだ。
一応、フォルダの指定は可能だが、SDKマネージャーでのダウンロード先が固定されているので、あえてチェックを外し、フォルダを個別に指定することはないだろう。
ちなみにダウンロード先が固定されてしまう件については、技術フォーラムでも話題になっており、%APPDATA%(通常はシステムドライブのCになるだろうが)の領域を圧迫させるのか、と怒りの投稿もあった。
次に、SDKマネージャーの位置。
エクリプス側でDetect~のチェックボックスをOFFからONにした場合、以下のファイルを読み込むようだ。
- %APPDATA% \Roaming\Garmin\ConnectIQ\sdkmanager-location.cfg
このファイルの中にsdkmanager.exeのパス位置が格納され、それが読み込まれていた。
そのため、上記ファイルに存在しないファイルパス名を指定すると、以下のようなエラーが表示されONにできない。
このファイルはいつ作成されるのか。
sdkmanager.exeが実行されたときに、このファイルが更新されたので、実行時に自分自身パスを書き込むようだ。
そのため、ダウンロードしたSDKマネージャーの展開する位置を間違え実行した場合には、別の場所に再展開したのちSDKマネージャーを起動する必要がある。
ちなみに私も、展開位置をダウンロードフォルダにしてしまい、その後、このファイル群を消してしまったため、エクリプスからSDKマネージャーを起動できないといった問題にぶち当たり、ここでも理由が分からず少なくない時間を使ってしまった。
3.2での開発
ビルドなどについては特に問題はなかった。
シミュレーターについては、以下の問題があった。
シミュレーター起動後、言語をjapaneseにして画面を確認したころ、以下のような表示になった。
本当は「月」と表示されるべきところが、文字化けしてしまっていた。
3.1系統のシミュレーターを起動後、プログラムを実行した場合は正しく「月」と表示されていた。
言語をEnglishにした場合は以下の表示でフォント自体は変わっているようだ。
なので、間違ったフォントが使われたというわけではなさそうだ。
文字的に3文字みたいだったので、プログラム的な間違いか?と思い、表示される文字のコードを調査。
Time.Gregorian.info(now, Time.FORMAT_MEDIUM).day_of_weekの内容を見てみた。
初めは、printlnで出したのだが、コンソール出力がutf-8対応していなかったので、その後toUtf8Arrayしたものを出力してみた。
バージョン | println結果 | toUtf8Array結果 |
3.1 | E6 9C 88 | |
3.2 | C3 A6 C5 93 CB 86 |
「月」のutf-8コードを見たところ、E69C88だったので3.1の結果が正しいと思われる。
3.2側のコードについては、調べてみても、何の文字なのかさっぱりわからなかった。
この件についてフォーラムで調べたところ、以下のような投稿があった。
シミュレーター側に問題があるのではないかという結論になったみたいだ。
なので、こちらは修正されるのを待つしかないようだ。
最後に
これで3.2系のSDKで開発できるようにはなった。
日本語が表示されない状態だと画面に関するテストが全くできないので、早くシミュレーターの修正が行われることを祈る。
あと、今回SDK以外にエクリプスが使用するJAVA VMのバージョン違いにより、エクリプス自体の起動ができないなどもあり、3.2のシミュレーターを起動させるまで1週間ほどかかってしまった。
開発環境をVisual Studio Code側に移せないかなと思って、そちらを試してみたのだが、まだ使い勝手がエクリプス側の方がいいため、移行はできなさそうだった。
現在、マシンには、言語開発環境でいうと、エクリプス、Visual Studio 2019、Visual Studio Code、Arduino IDEと4種類入っている。それぞれの環境管理も結構面倒に感じてきた。
コメント