来自developer.android.com:
启动时,模拟器会读取系统当前使用的 DNS 服务器列表。然后,它将最多四个服务器的 IP 地址存储在此列表中,并根据需要在模拟地址 10.0.2.3、10.0.2.4、10.0.2.5 和 10.0.2.6 上为它们设置别名。
在 Linux 和 OS X 上,模拟器通过解析文件 /etc/resolv.conf 来获取 DNS 服务器地址。在 Windows 上,模拟器通过调用 GetNetworkParams() API 来获取地址。请注意,这通常意味着模拟器会忽略“主机”文件的内容(Linux/OS X 上的 /etc/hosts,Windows 上的 %WINDOWS%/system32/HOSTS)。
在命令行启动模拟器时,您还可以使用 -dns-server 选项手动指定要使用的 DNS 服务器的地址,其中是逗号分隔的服务器名称或 IP 地址列表。如果您在模拟网络中遇到 DNS 解析问题(例如,使用 Web 浏览器时出现“未知主机错误”消息),您可能会发现此选项很有用。
所以,我真的尝试从命令行运行模拟器:
$ emulator @Name_of_my_avd -dns-server 192.168.0.1
其中 192.168.0.1 - 是我家路由器的 IP。我在系统设置中发现 192.168.0.1 也是我的 DNS 服务器。
一切正常!
UPD:对于 MacOS:转到系统偏好设置 -> 网络 -> 高级(在您的活动连接的选项卡中)-> DNS。您将看到系统使用的 DNS 服务器列表(图片)。当您编辑此列表并单击应用时,您的 /etc/resolv.conf 将更新,因此模拟器(不带选项 --dns-server)将使用它!但是:在我的情况下,模拟器只使用列表中的第一个 DNS 服务器!因此,如果您希望您的模拟器使用某个 DNS 服务器,只需将其设为列表中的第一个 DNS即可。