雑文発散

«前の日記(2015-06-18) 最新 次の日記(2015-06-20)» 編集
過去の日記

2015-06-19 [長年日記]

[Pebble] Pebble の Aplite エミュレータへアプリがインストールできない時の対処方法を知った話

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

ちょっと待ち時間が増えちゃうので、何かをなんとかしたいキモチはあるのだけれど、何をなんとかすればいいのかまだ見えていないので、しばらくはこのまま使う感じになりそう。