Нужна помощь с сетевым эмулятором Android - PullRequest
6 голосов
/ 21 июля 2011

Вот строка cmd

"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

Вот исключение из примера отладки Wikitionary

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

О моем прокси: это squid на моей локальной машине, и он настроен для маршрутизации через родительский прокси (с аутентификацией). Это хорошо работает с браузером / загрузчиком Android SDK / IntelliJ и т. Д., Но эмулятор сети не работает.

Главное замешательство -

tcp:(null)

Есть предложения?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Существует множество зарегистрированных проблем с поддержкой прокси в эмуляторе, особенно для последних версий Windows. Смотрите отчет об ошибке здесь:

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

Есть некоторые предлагаемые обходные пути, которые могут помочь, например, установка прокси в настройках сети, а не для эмулятора в целом.

1 голос
/ 04 августа 2011

У меня та же проблема (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 - соединение отклонено

Я использую squid в качестве прокси-сервера, а журналы:

1312464815.525 0 172.16.1.1 TCP_DENIED / 400 1587 СОЕДИНЕНИЕ: 0- НЕТ / - text / html

Кажется, что-то теряется ...

Я также заметил, что эмулятор пытается использовать мои днс в запросе.

0 голосов
/ 01 августа 2011

Поскольку вы ссылаетесь на localhost в своей системе из эмулятора Android, вам придется использовать http://10.0.2.2:8080/. Это связано с тем, что эмулятор Android работает внутри виртуальной машины, и, следовательно, здесь 127.0.0.1 или localhost будет собственным адресом обратной связи эмулятора. Кроме того, вам не нужно ставить -netspeed full -netdelay none, так как свойства установлены в эти значения по умолчанию. Взгляните на this для получения дополнительной информации о сети эмулятора.

EDIT:

Вы заменяете localhost другим адресом в зависимости от вашей ситуации. Если это адрес маршрутизатора / шлюза, вы замените его на 10.0.2.1. Если это специальный псевдоним вашего интерфейса обратной связи хоста (т. Е. 127.0.0.1 на вашем компьютере разработки), то вы замените его на 10.0.2.2. Если это первый DNS-сервер, то вы заменяете его на 10.0.2.3. Если это необязательный второй, третий и четвертый 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. Нажмите здесь для получения дополнительной информации об этом.

...