使用Android Emulator的系统主机文件

时间:2013-08-01 13:15:08

标签: android emulation hosts

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

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

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

我从以下网站获取了参考资料,但是如果网站部署在同一台服务器上,大多数网站都会说明如何使用hosts文件。

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

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

-Senthil

3 个答案:

答案 0 :(得分:9)

使用最新的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
    

答案 1 :(得分:8)

要检查的一件重要事情是,如果您在Windows或MacOS计算机上创建HOSTS文件, HOSTS文件包含linux行结尾('\ n',LF,#10,#0x0A )。 Android忽略HOSTS文件,如果它包含Windows的2-char行结尾('\ r \ n',CRLF,#13#10,#0x0D0A)或MacOS风格的行结尾('\ r',CR,#13, #0X0D)。

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

答案 2 :(得分: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

Reference: Emulator Networking