Android 模拟器忽略 system/etc/hosts 文件中的设置

Android emulator ignores settings in system/etc/hosts file

我做了什么。要使用测试 api,我需要将特定的 ip 和主机名添加到 hosts 文件中。所以我在我的电脑上编辑了配置system/etc/hosts。之后我就可以在PC浏览器上使用我的主机了。

PC 主机文件 img: _

然后我尝试在 Android Studio Emulator(同一台 PC)上打开同一主机。并且浏览器显示错误 "webpage not available ... ERR_NAME_NOT_RESOLVED"。奇怪,因为,我假设模拟器会使用 PC OS 主机属性(就像在 Mac 上使用 X-Code 模拟器)。

浏览器 img 中的模拟器错误: _

所以我 root 模拟器,以与 PC 上相同的方式更改它的主机文件并重新启动模拟器 - 在浏览器中出现相同的错误。

模拟器主机文件 img: _

似乎 Android 模拟器忽略了 PC 主机文件设置和它自己的文件设置。 如何让模拟器与我的主机 ip-hostname 对一起工作?也许我错过了什么?

根据模拟器文档,这是预期的行为:

Note that this usually means that the emulator ignores the content of your "hosts" file (/etc/hosts on Linux/OS X, %WINDOWS%/system32/HOSTS on Windows).

但是,您可以使用 10.0.2.2 从模拟器内部访问您的主机(而不是在您的示例中进行测试)

系统管理员以某种方式解决了他这边的这种情况。所以现在我使用 -dns-server option 手动指定 DNS 服务器的地址。我的测试 api 请求有效。

emulator -avd nexuss5 -dns-server xxx.xx.x.x

设备 hosts 文件中的最后一行必须以新行结尾。