8

我在 Android 模拟器中使用系统主机文件详细信息时遇到问题。我将我的网站 (www.example.com) 部署在 Web 服务器中。我正在尝试从我的桌面访问模拟器中的那些网站。我的桌面有一个 hosts 文件,其条目为

10.xx.xx.xx www.example.com

我正在尝试从 android 模拟器 - 浏览器访问 www.example.com,但它无法正常工作。

我从下面的网站中获得了参考,但大多数网站都说明了如果网站部署在同一台服务器上,如何使用 hosts 文件。

http://sadhanasiblog.blogspot.in/2012/07/local-environment-setup-for-android.html

如果有人有答案,请告诉我。提前致谢。

-森蒂尔

4

3 回答 3

14

使用最新的 Android 工作室和工具。您现在可以按照此说明使用。每个模拟器只需要运行一次。

  1. 使用以下命令启动模拟器。此命令位于您的 [sdk 文件夹]/tools 目录下

    emulator @[emulator name] -writable-system
    
  2. 打开另一个命令提示符,然后将目录切换到 [sdk 文件夹]/platform-tools 并运行以下命令

    adb root
    adb remount
    adb shell
    echo '10.0.2.2 [localserver dns name]'>>/etc/hosts        -- example echo '10.0.2.2 xxxx.com'>>/etc/hosts
    
于 2017-04-07T19:44:08.103 回答
9

要检查的一件重要事情是,如果您在 Windows 或 MacOS 机器上创建 HOSTS 文件,则HOSTS 文件是否包含 linux 行结尾('\n'、LF、#10、#0x0A)。如果 HOSTS 文件包含 Windows 的 2 字符行尾('\r\n'、CRLF、#13#10、#0x0D0A)或 MacOS 样式的行尾('\r'、CR、#13、 #0x0D)。

除了字母/数字/点(用于 IP 和主机名)外,文件应仅包含字符 0x20(空格)、0x09(制表符)和 0x0A(换行)。

于 2013-11-28T12:25:42.137 回答
3

要访问您的本地主机,IP 是

10.0.2.2 主机环回接口的特殊别名(即开发机器上的 127.0.0.1)

来自 Android 文档:

启动时,模拟器会读取系统当前使用的 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 -avd <you_avd_name> -dns-server <serverList>

当我必须在同一台 PC 上连接到带有 linux 发行版的 VirtualBox 时,我使用它,它可以从模拟器 webview 工作http://10.0.2.3/servlet-name

参考:模拟器网络

于 2013-08-01T13:20:57.803 回答