この記事は、Boot to Gecko エミュレータを使用する際に知っておくべき重要な事項を要約したガイドです。完全なユーザマニュアルではなく、代わりにいくつかの有益な事項を、あなた自身が学ばなくてもいいように、簡単に説明します。
このガイドは、既にエミュレータをビルドしていることを前提としています。もしまだなら、FirefoxOS のビルドとインストールに巻き戻ってください!
B2G エミュレータについて
B2G エミュレータは 2 種類あります。ひとつは、config.sh
を実行する際に "emulator" 用に構成されたビルドによるもので、ARM デバイスエミュレータです。x86 プロセッサをエミュレートしたものよりもずっと遅いのですが、安定しており実際のデバイスが行うような正確な表示です。config.sh
を実行する際に "emulator-x86" として構成したものは、x86 デバイスエミュレータとなります。
一旦エミュレータを選択、構成して、ビルドしたら、残りの作業はユーザ的観点から同じやり方ですので、このガイドの残りの部分はどちらにも共通です。
エミュレータを起動する
B2G エミュレータを起動するには、以下のコマンドを入力してください :
./run-emulator.sh
これで、エミュレータのスタートアップタスクを全て処理します。では、エミュレー タが起動して、Boot to Gecko が立ち上がるのを根気よく待ってください。2 分程かかるかもしれませんが、我慢してください。
エミュレータが起動しなかった場合
エミュレータは、よく起動に失敗します。超最先端テクノロジにようこそ!ここに問題を解決するいくつかのヒントがあります。
VM内で試していますか?
VirtualBox とParallels はグラフィックアクセラレータのサポートに問題の多いことが原因で、エミュレータやOpenGL端末のブート時に失敗を起こします。端末がブート開始し、失敗し、再起動するループに入ったり、起動するがエミュレータ画面に何も表示されなかったりします。不幸にも解決方法はありません (VirtualBox用の回避策はあります) - VMWare Player (振込ウェア), Workstation あるいは Fusionを使う必要があります。VirtualBoxでは - ゲストのアドオンをインストールしない、またはvboxvideoモジュールを無効化します。
adb サーバが動作しているか確認する
通常エミュレータが動作しない原因は、エミュレート端末との対話を行う adb サーバが実行されないか、もしくは正しく機能していないことです。この場合、通常はエミュレータを起動したターミナル内に下記のエラーメッセージが見られます。
emulator: control console listening on port 5554, ADB on port 5555
emulator: can't connect to ADB server: Connection refused
注意 : もし、B2G ビルドシステムによってビルドされた adb
を使用しているなら(多分そのはずですが) $B2G/out/host/<platform>/bin
ディレクトリにあります。Mac では、これが、例えば、 $B2G/out/host/darwin-x86/bin
にあります。
adb
が実行されているか確認するには、このようにしてください :
ps aux | grep adb
もし存在したら、多分正しく動作していないので、これを実行して強制停止してください。
adb kill-server
存在しなかったら、これを実行してください :
adb start-server
それから、もう一度エミュレータを実行してみてください。もし、それでも動作しなかったら、irc.mozilla.org の #b2g を訪れて、助けを求めるべき時です。
構成設定を削除する
時々、エミュレートされたデバイス上にある無効な構成設定が、不具合の原因になります。これを修正するために、以下のやり方で IndexedDB データベースを削除することができます :
- adb サーバが動作しているか確認する を参照して、adb が動作していることを確認します
- エミュレータを起動します
- ホストコンピュータのターミナルから、エミュレータのビルドディレクトリのルートで、次のように入力します :
out/host/<platform>/bin/adb -e shell
; Mac の場合は、out/host/darwin-x86/bin/adb -e shell
です - これで adb shell にいるはずですので、エミュレートされたデバイス上でシェルコマンドを実行可能になります。デバイス上で B2G を止めましょう :
stop b2g
- IndexedDB データベースを削除します :
rm -rf /data/local/indexedDB
- エミュレートされたデバイス上の B2G を再起動します :
start b2g
この点で、できれば、あなたが Gaia インターフェースまで戻って解決するといいのですが。
エミュレータが開始しても"mozilla technology"のスプラッシュスクリーンが出る前後で画面が真っ黒な場合
これが起こる場合、エミュレータを動作させている機械のドライバのバグの可能性があります。Linuxのオープンソースの nouveau ドライバーで観測されます。最も簡単な方法は、機械のドライバーを変更することです。 nouveau ドライバーの場合は代わりにプロプライエタリな(Ubuntuの"追加の") ドライバーをインストールします。オンボードのIntelグラフィックのチップセットの場合、Linuxデフォルトのオープンソースドライバーは、エミュレータの'eglMakeCurrent failed'エラーを起こす事があり、どうやらOpenGLバージョン 2.0未満がGPUエミュレーション用に必要なようです。解決法はGPUをアクティベート解除することで、 run-emulator.sh
スクリプトを編集するとできます (これは遅くなります).
エミュレータを構成する
エミュレートしたいデバイスにより近づけるために、エミュレータを調整する複数の変更可能なオプションがあります。このセクションでは、そのやり方に関するいくつかの基本的な情報を提供します。エミュレータの設定は run-emulator.sh
スクリプトを(理想的にはコピーして)編集することで調整できます。ここに記述されているパラメータは、非常に有用なパラメータの極一部にすぎません。その他のパラメータの詳細情報は qemu のサイトで調べてみてください。
run-emulator.sh
のコピーを 1 つ作成してください。異なる構成で起動するのが楽になります。スキンを変更する
デフォルトでは、エミュレータは HVGA モード、つまり half-VGA 、320×480 ピクセルで起動します。この値は、エミュレータが起動する際に与えられる -skin
パラメータで指定されます。run-emulator.sh
スクリプトを(理想的にはコピーして)編集することで、異なるディスプレイモードに切り替えることができます。提供されているスキンは以下の通りです :
- HVGA (320x480)
- QVGA (240x320)
- WQVGA (240x400)
- WQVGA432 (240x432)
- WSVGA (1024x600)
- WVGA800 (480x800)
- WVGA854 (480x854)
- WXGA720 (1280x720)
- WXGA800 (1280x800)
スキンは、B2G/development/tools/emulator/skins
ディレクトリにあります。特筆すべきなのは、スキン用の書式がかなりシンプルになっていることです。内容を確認してみると、様々なユーザインターフェースオブジェクト用の PNG ファイルや、インターフェースと画面領域のレイアウトを説明する layout
という名前のテキストファイルがたくさん入っている、シンプルなフォルダであることがわかるでしょう。カスタムスキンが必要なら、作成するのは非常に簡単です。
メモリサイズを変更する
構成変更したい、もしくは変更する必要のある設定の、もう一つのオプションは、デバイスメモリサイズです。デフォルトでは 512MB ですが、エミュレートしているデバイスのメモリがもっと多いか少ない場合、取り組みたい基本デバイスでアプリを確実に動作させるには、設定が一致するよう調整するのは重要でしょう。これを行うには -memory
パラメータの値を、必要とするサイズに MB 単位で変更してください。デフォルトの 512MB 以外では、256MB や 1024MB が、一番試してみたくなりそうな値です。
デバイス用にエミュレートされた記憶容量を変更するには(これは、携帯電話のフラ ッシュストレージや、コンピュータのハードディスクのような、ローカルデータ用記憶域 のことです)-partition-size
パラメータを変更してください。デフォルトは 512MB ですが、テストを要するデバイスの種類をシミュレートするために、必要となるどのようなサイズでも MB 単位で指定可能です。
ネットワーク接続
何らかの理由でエミュレータがインターネットに接続できなかった場合、以下のコマ ンドをコマンドラインから実行してください :
adb shell setprop net.dns1 10.0.2.3
emulator-jb または emulator-kk を実行している場合、DNSサーバの設定コマンドは異なります。下記のコマンドを実行します:
adb shell ndc resolver setdefaultif eth0 adb shell ndc resolver setifdns eth0 10.0.0.0 10.0.2.3