6

ここにコマンドラインがあります

"C:\Progra~2\Android\android-sdk\tools\emulator.exe" -avd Touch -netspeed full -netdelay none -http-proxy localhost:3128 -debug-proxy

エミュレータから google.com を開こうとすると、コンソールが出力されます。

server name 'localhost' resolved to 127.0.0.1:3128
proxy_http_setup: creating http proxy service connecting to: localhost:3128
server name 'localhost' resolved to 127.0.0.1:3128
proxy_http_setup: creating HTTP Proxy Service Footer is (len=2):
'
'
http_service_connect: trying to connect to (null)
http_service_connect: using HTTP rewriter
tcp:(null)(880): connecting
tcp:(null)(880): connected to http proxy, sending header
tcp:(null)(880): sending 27 bytes:
>> 43 4f 4e 4e 45 43 54 20 28 6e 75 6c 6c 29 20 48    CONNECT (null) H
>> 54 54 50 2f 31 2e 31 0d 0a 0d 0a                   TTP/1.1....

tcp:(null)(880): header sent, receiving first answer line
tcp:(null)(880): received 'HTTP/1.0 400 Bad Request'
tcp:(null)(880): connection refused, error=400
http_service_connect: trying to connect to (null)
http_service_connect: using HTTP rewriter
tcp:(null)(888): connecting

これはウィキショナリーのデバッグ例からの例外です

Caused by: java.net.ConnectException: en.wiktionary.org/91.198.174.232:80 - Connection refused

プロキシについて: ローカル マシン上で squid であり、親プロキシ (認証付き) を介してルーティングするように構成されています。これは、ブラウザ/Android SDK ローダー/IntelliJ などでは問題なく動作しますが、エミュレータ ネットワークは機能しません。

主な混乱は

tcp:(null)

助言がありますか?

4

3 に答える 3

2

特にWindowsの最近のバージョンでは、エミュレーターでのプロキシサポートに関して記録された問題がたくさんあります。こちらのバグレポートをご覧ください。

http://code.google.com/p/android/issues/detail?id=5508&q=emulator%20proxy&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

エミュレータ全体ではなく、ネットワーク設定でプロキシを設定するなど、役立つ可能性のあるいくつかの推奨される回避策があります。

于 2011-08-03T01:23:57.280 に答える
1

同じ問題があります (Mac Os X - Android SDK Tools 12)。これらはlogcatからの私のログです:

08-04 15:33:41.576: INFO/java.net.Socket(256): www.google.com/209.85.148.104(80): java.net.ConnectException: www.google.com/209.85.148.104:80 - 接続拒否

イカをプロキシとして使用し、ログは次のとおりです。

1312464815.525 0 172.16.1.1 TCP_DENIED/400 1587 接続:0 - なし/- text/html

何かが消えていくようです…

また、エミュレーターがリクエストで私の dns を使用しようとしていることにも気付きました。

于 2011-08-04T13:37:08.213 に答える
0

Android エミュレーターからシステムの localhost を参照しているため、http://10.0.2.2:8080/. これは、Android エミュレーターが仮想マシン内で実行されるためです。したがって、ここでは 127.0.0.1 または localhost がエミュレーター自体のループバック アドレスになります。-netspeed full -netdelay noneまた、プロパティはデフォルトでこれらの値に設定されているため、配置する必要はありません。Emulator Networking の詳細については、こちらをご覧ください。

編集:

localhost状況に応じて別のアドレスに置き換えます。ルーター/ゲートウェイ アドレスの場合は、 に置き換えます10.0.2.1。これがホスト ループバック インターフェイスの特別なエイリアス (つまり、開発マシンの 127.0.0.1) である場合は、それを に置き換えます10.0.2.2。最初の DNS サーバーの場合は、 に置き換えます10.0.2.3。オプションの 2 番目、3 番目、4 番目の DNS サーバーの場合は、10.0.2.4/ 10.0.2.5/に置き換えます10.0.2.6。エミュレートされたデバイス自体のネットワーク/イーサネット インターフェイスである場合は、 に置き換えます10.0.2.15。それがエミュレートされたデバイス独自のループバック インターフェイスである場合は、次のように置き換えます。127.0.0.1. また、開発マシンのアドレス 127.0.0.1 はエミュレーター独自のループバック インターフェイスに対応しているため、開発マシンのループバック インターフェイスで実行されているサービスにアクセスする場合は、10.0.2.2代わりに特別なアドレスを使用する必要があります。詳細については、ここをクリックしてください

于 2011-08-01T06:13:02.767 に答える