2009年12月10日木曜日

エミュレータのプロキシ設定

Androidエミュレータは内蔵ブラウザ(Crome lite?)からWeb閲覧も可能。
なのですが、うちの環境だとなぜか接続に失敗してしまいます。
ちなみに作成したアプリはAndroid2.0.1のもの。

ネット上で情報収集してみたところ、いくつか対処法があるみたいです。


(1)Eclipseのネットワーク設定でプロキシを設定する。
この方法だと設定前に作成したプロジェクトには適用されないとか?
しかし、この方法では接続できませんでした。


(2)端末APNを設定する。
かなりリッチなエミュレーターだけあって設定という項目も用意されています。
「メニュー」⇒「△」⇒「Settings」からネットワーク設定らしき項目を選びます。
Android1.5と2.0.1とで項目名が異なるみたいです。

「APN」という項目があるのでそれを選択します。
「menu」ボタンを押して「New APN」をクリック。
・名前(適当に)
・APN(Internet と入力)
・proxy
・port
の4項目を設定して、「menu」ボタンを押してSave。
このAPN設定が使用されるように選択をして完了。

・・・のはずなんですが、Android2.0.1の方はこれもNGでした。
Android1.5の方はこれでブラウジングできるようになったんですが。
proxyにIPアドレスを入れるといいのかもしれませんが、会社のなのでよくわかりません。

一旦保留かな。


(3)propertyを書き換える
エミュレータに同梱されているadb.exeを使ってプロパティを書き換えます。
エミュレータが起動されている状態でコマンドプロンプトから

adb shell
(toolsフォルダにPathを通しておく必要があります)

とすると、先頭が「#」になります。

# getprop

と入力するとプロパティ一覧が表示されます。

# setprop net.gprs.http-proxy http://[プロキシ]:[ポート]/

と入力するとプロキシ設定が出来ます。
但し、エミュレータを終了すると設定が元に戻るみたいです。


(4)setting.dbの変更
(3)と同様に

adb shell

を実行し、シェルを起動。
その状態で次の1行を実行し、設定に割り当てられているIDを避けて、proxyを設定してやればいいらしい。

sqlite3 /data/data/com.google.android.providers.settings/databases/settings.db "SELECT * FROM system"

ですが、うちの環境では実行しても何も取れず。
setting.dbにそもそもsystemテーブルが無いとか言われる始末。

上の1行で確認できた人なら

sqlite3 /data/data/com.google.android.providers.settings/databases/settings.db "INSERT INTO system VALUES(99,'http_proxy','[プロキシ]:[ポート]')"

と設定するといいらしい。

らしい、ばかりで自分では何一つ確認できませんでした。

1 件のコメント:

  1. ちょっと気になったので。

    >setting.dbにそもそもsystemテーブルが無いとか言われる始末。
    たぶん
    「sqlite3 settings.db」じゃなくて
    「sqlite3 setting.db」とやったんじゃないでしょうか?

    違ったらすみません。

    返信削除