2

我一直在研究这里找到的所有可能的解决方案,不幸的是,它们都不适合我。我的清单设置正确;我有 3 个不同的 AVD,它们都在右上角显示 3G 标志。我正在开发一个需要 Internet 连接的应用程序;我尝试使用浏览器简单地上网,但它不起作用。我没有代理;我连接到路由器;我在 Windows Vista 上。我尝试在运行配置中添加我的 PC 的 DNS。我能看到的唯一问题可能把事情搞砸了(尽管我记得它以前没有用过)当 Eclipse 要求更新到 SDK 19 时,我不得不手动更新 Tools 文件夹。我一直得到一个Eclipse 无法覆盖 Tools 文件夹的错误。这就是我在 Google 上找到的解决方案;当然,

有什么建议么?

谢谢!

4

1 回答 1

0

来自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即可。

于 2018-04-01T09:22:44.790 回答