Pebble の SDK には QEMU による Pebble エミュレータが付いてくる。Aplite プラットフォームと Basalt プラットフォームの 2 つが用意されており、それぞれ次のようにして build したアプリをインストールする。
% pebble install --emulator aplite
% pebble install --emulator basalt
昨日の日記の「自作 Pebble アプリをバージョンアップして初代 Pebble のサポートを追加した話」で Aplite 対応をしていたときにも、このエミュレータを使おうとしたのだけど、なぜかインストールに失敗する。
& pebble install --emulator aplite
[INFO ] Starting Pebble aplite emulator...
[INFO ] Starting phone simulator...
[ERROR ] Failed to install 'build/beaver-typeface-watchface.pbw'
これはオレのコードが悪いのか?と思って、試しに pebble new-project
をした直後のコードで build して install してみても失敗した。
& pebble install --emulator aplite
[snip]
[INFO ] Starting Pebble aplite emulator...
[INFO ] Starting phone simulator...
[ERROR ] Failed to install 'build/test.pbw'
Pebble SDK に含まれる Aplite エミュレータには何か問題があるんだろうか?と思って調べてみると「Aplite emulator cannot install app; Basalt emulator works fine.」というフォーラムページが見つかった。オレの状態とこのタイトルがぴったりマッチするので、何か情報があるのか?と読み進めていったら、解決策が書かれていた!!
I ran into this using PebbleSDK-3.0-dp8. Aplite was not working but basalt was. I added a 5 second delay after starting the emulator in the ./tools/pebble/PebbleEmulator.py and this fixed the problem.
更に修正するコードも示されていたので、オレもそれを利用させてもらった。Homebrew で Pebble SDK をインストールしたので、そのコードは /usr/local/Cellar
の下にある。
% cd /usr/local/Cellar/pebble-sdk/3.0/tools/pebble/
% diff -c PebbleEmulator.py.orig PebbleEmulator.py
*** PebbleEmulator.py.orig 2015-05-28 01:47:12.000000000 +0900
--- PebbleEmulator.py 2015-06-18 07:36:03.000000000 +0900
***************
*** 46,56 ****
--- 46,58 ----
if not self.is_qemu_running():
logging.info("Starting Pebble {} emulator...".format(self.platform))
self.start_qemu()
+ time.sleep(5);
need_wait = True
if not self.is_phonesim_running():
logging.info("Starting phone simulator...")
self.start_phonesim()
+ time.sleep(5);
need_wait = True
if need_wait:
これでインストールが成功するようになった。
% pebble build && pebble install --emulator aplite
[INFO ] Starting Pebble aplite emulator...
[INFO ] Starting phone simulator...
[INFO ] Installation successful
ちょっと待ち時間が増えちゃうので、何かをなんとかしたいキモチはあるのだけれど、何をなんとかすればいいのかまだ見えていないので、しばらくはこのまま使う感じになりそう。