Эмулятор Android -использование DNS-сервера

В настоящее время я несколько изо всех сил пытаюсь заставить эмулятор Android использовать собственный DNS-сервер, который работает на локальном хосте (127.0.0.1).

На данный момент я пробовал различные подходы, пытаясь убедить эмулятор использовать мой DNS-сервер, но пока безуспешно. В конце концов, это всегда сводится к следующему сообщению об ошибке:

### WARNING: can't resolve DNS server name 'localhost'
### WARNING: will use system default DNS server

localhost, однако, корректно разрешается при передаче в nslookup:

$ nslookup localhost
Server:  dnszrh01.xxx
Address:  10.xxx.xxx.xxx

Non-authoritative answer:
Name:    localhost.xxx
Address:  127.0.0.1

Использование IP-адреса вместо имени хоста также мало помогает, оно просто меняет сообщение об ошибке на:

### WARNING: can't resolve DNS server name '127.0.0.1'
### WARNING: will use system default DNS server

Дополнительная командная строка, которую я использую для запуска эмулятора, гласит:

-http-proxy http://proxy.xxx:8080 -dns-server 127.0.0.1 -debug-proxy -verbose

Это происходит с эмулятором Android версии 5.0 (build_id ECLAIR-24846), работающим в Windows.

Любой намек на то, как заставить эту работу работать, очень ценится!


person Thilo-Alexander Ginkel    schedule 20.04.2010    source источник


Ответы (1)


Пара вещей...

1) Я заметил, что получаю эту ошибку также, когда у меня вообще нет подключения к сети. т.е. Нет беспроводного или Ethernet-соединения.

2) Выдержка из руководства по эмулятору: http://developer.android.com/guide/developing/tools/emulator.html#dns

Настройка параметров DNS эмулятора При запуске эмулятор считывает список DNS-серверов, которые в настоящее время использует ваша система. Затем он сохраняет IP-адреса до четырех серверов в этом списке и при необходимости устанавливает для них псевдонимы на эмулируемых адресах 10.0.2.3, 10.0.2.4, 10.0.2.5 и 10.0.2.6.

В Linux и OS X эмулятор получает адреса DNS-серверов, анализируя файл /etc/resolv.conf. В Windows эмулятор получает адреса, вызывая API GetNetworkParams(). Обратите внимание, что обычно это означает, что эмулятор игнорирует содержимое вашего файла hosts (/etc/hosts в Linux/OS X, %WINDOWS%/system32/HOSTS в Windows).

При запуске эмулятора из командной строки вы также можете использовать параметр -dns-server, чтобы вручную указать адреса DNS-серверов для использования, где список имен серверов или IP-адресов, разделенных запятыми. Этот параметр может оказаться полезным, если вы столкнулись с проблемами разрешения DNS в эмулируемой сети (например, сообщение «Неизвестная ошибка хоста», которое появляется при использовании веб-браузера).

3) Также см. этот другой вопрос StackOverflow: Эмулятор Android не использует хост-файл Windows ?

person hydrox467    schedule 01.02.2011
comment
Например: emulator -avd ‹Имя Avd› -dns-server 8.8.8.8 - person Androider; 14.11.2011