2010年10月29日金曜日

エミュレーターで Google マップ表示 (Proxy経由の場合)

Proxy 環境化の PC にて emulator を起動し、Google Map を表示させると、
地図が表示されずに、LogCat 上に以下のエラーが記録されます。

ERROR/ActivityThread(200): Failed to find provider info for com.google.settings
ERROR/MapActivity(222): Couldn't get connection factory client

emulator に対し、Proxy 設定を行えば、解決したのですが、
ググって調べた結果、対応方法が3通りあることが分かったので、以下に整理します。

設定する値は共通です。
設定値
-http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号>

emulator の proxy 設定方法。
  1. Default emulator options を設定。
    新規プロジェクト作成時のデフォルトとなる emulator のオプション。
    既存プロジェクトには反映されないので、既存プロジェクトに対しては 2. か 3. の方法を実施。

  2. Additional Emulator Command Line Options を設定
    各プロジェクト毎の個別設定。
    1. を実施していれば、新規プロジェクトは自動設定されます。

  3. emulator コマンドの引数で指定。

詳細は以下の通りです。

1. Default emulator options を設定。

Eclipse にて "Window" --> "Preferences" で Preferences 画面を表示させます。
"Android" --> "Launch" を選択し、以下のように "Default emulator options" に値を設定します。
これで新規プロジェクトが作成されるたびに、この設定が反映されるようになります。



2. Additional Emulator Command Line Options を設定

Eclipse にて "Run" --> "Run Configurations..." 又は "Debug Configurations..." を選択。
左側の該当のプロジェクトを選択し、右側の "Target" タブを選択。
一番下にある "Additional Emulator Command Line Options" に値を設定します。

※ 自分の環境だけも知れませんが、画面を下に広げないと見えない状態でした。



3. emulator コマンドの引数で指定。

コマンド・プロンプトにて、emulator を起動するときに、
-http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号> を指定します。

C:\> emulator -avd <AVD名> -http-proxy http://<proxyのFQDN又はIPアドレス>:<ポート番号>