Отображения Url в файле hosts в эмуляторе игнорируются

Я использую эмулятор genymotion и вытаскиваю из него файл hosts, используя

adb remount

adb pull/system/etc/hosts C:\Users\Rkn09\Desktop\hosts

и я добавил новое отображение как 192.168.0.115 xxx.mydomain.com, и я вернул его в эмулятор, используя

adb push C:\Users\Rkn09\Desktop\hosts/system/etc/hosts

но когда я делаю запрос xxx.mydomain.com, он не перенаправляет на локальный компьютер в локальной сети 192.168.0.115. Я даже проверил файл hosts с помощью cat/etc/hosts, и он имеет мое сопоставление, может ли кто-нибудь помочь мне с этой проблемой.

PS: тот же процесс отлично работает в Mac OS X EI Captain, я получаю эту проблему в windows7

Ответ 1

У меня была та же проблема. Следующее разрешило это:

  • Убедитесь, что у вас есть пустая строка после последней записи хостов файл
  • Если вы используете вкладки в файле hosts, замените их пробелами

Перезагрузите Android и повторите попытку:

adb reboot

Ответ 2

hosts файл должен быть написан с использованием стиля окончания строки linux.

Это невозможно сделать в "Блокноте", а также в Wordpad. Попробуйте установить другой редактор, который поддерживает эту функцию, и убедитесь, что вы сохранили файл hosts правильно.

(Я пробовал AkelPad, но Nodepad ++ предлагает ту же функцию)

Предположительно, независимо от того, что такое кодировка. Оба Windows-1252 (ANSI) и utf-8 работали.

Сделав все изменения, нажмите hosts файл на устройство:

adb remount
adb push hosts /system/etc/hosts

Убедитесь, что у вас есть правильный файл hosts, и он загружен и работает ли он:

adb shell cat /system/etc/hosts
adb shell ping my.domain.com

Откройте браузер с устройства Genymotion и убедитесь, что все работает, набрав:

http://my.domain.com

При необходимости вы можете добавить порт

http://my.domain.com:1234

Вам не нужно перезагружать Android-устройство.


Если проблема не исчезла, убедитесь, что она связана с самим файлом hosts путем прямого вызова ip-адреса:

adb shell ping 192.168.x.x

Если он работает, то еще раз проверьте окончание строк в файле. Некоторые текстовые редакторы могут смешивать их, и возможность использовать окончание строки Unix довольно часто связана только с новыми файлами.

Ответ 3

По-видимому, ни один из вышеперечисленных решений не помог вам, что я ожидал. Я не знаю, как дать вам пошаговое решение, но я надеюсь, что мой ответ поможет вам.

Эмулятор (обычно) находится в совершенно другой подсети.

Эмуляционные системы создают виртуальный сетевой адаптер для подключения эмулятора к хост-машине, поэтому вам нужно указать адрес вашего "виртуального сетевого адаптера" в "файл hosts" вместо ip-адреса "физического сетевого адаптера", хост-машина ".

Вот как он выглядит в сети

Computer                               Emulator
192.168.0.115
mask: 255.255.255.0

192.168.6.1<-------------------------->192.168.6.2
mask: 255.255.255.0

Итак, для эмулятора 192.168.0.115 не существует

поэтому в файле hosts указывается адрес 192.168.6.1 (или любой другой адрес вашего виртуального сетевого адаптера), в то время как ваш веб-браузер прослушивает все возможные локальные адреса (то есть 0.0.0.0:80) или меняет маску подсети соответственно. Я думаю, что первое будет хорошим решением.