【问题标题】:Url mappings in hosts file in emulator is being ignored模拟器中主机文件中的 URL 映射被忽略
【发布时间】:2016-02-25 11:37:40
【问题描述】:

我正在使用 genymotion 模拟器并从中提取主机文件

adb 重新挂载

adb pull /system/etc/hosts C:\Users\Rkn09\Desktop\hosts

我添加了新的映射,例如 192.168.0.115 xxx.mydomain.com 我将它推回模拟器使用

adb push C:\Users\Rkn09\Desktop\hosts /system/etc/hosts

但是当我向 xxx.mydomain.com 发出请求时,它不会重定向到我在 LAN 192.168.0.115 中的本地计算机。我什至使用 cat /etc/hosts 检查了主机文件,它有我的映射,谁能帮我解决这个问题。

PS:相同的进程在 Mac OS X EI Captain 中运行良好,我在 windows7 中遇到了这个问题

【问题讨论】:

  • 完全相同的问题,不幸的是,不能投票两次!
  • 在模拟器中使用 192.168.x.x 是否有效?就我而言 - 是的,但 dns 仍未解决
  • 我的朋友遇到了类似的问题,问题出在 hosts 文件中,因为 Windows 记事本。我们没有在记事本中编辑主机文件,而是在 adb shell 中使用“echo”命令将主机条目添加到主机文件中。

标签: android android-emulator localhost genymotion hosts


【解决方案1】:

在主机文件末尾对我来说是 CR LF 字符。您要复制到 Android 模拟器的主机文件应该有 Unix 换行符。

您可以通过 NotePadd ++ 进行设置和检测。

在NotePad ++中打开host文件,选择“编辑>>EOL转换>>Unix(LF)”

您可以通过转到“查看>>显示符号>>显示行尾”来确认行尾

这将显示 LF 字符

要验证主机文件是否正常工作,您可以转到 adb shell 并 ping 域。

【讨论】:

  • 非常感谢 - 我浪费了很多时间!
【解决方案2】:

对我来说同样的问题,在我的情况下,问题是我的格式文件是 widnwos 格式,所以我使用了 dos2unix.exe 工具来更改格式

我觉得notepad++也可以改成unix格式

【讨论】:

    【解决方案3】:

    显然,以上解决方案都没有帮助您,这正是我的预期。不知道怎么给你一步步的解决方法,希望我的回答能帮到你。

    模拟器(通常)位于完全不同的子网中。

    仿真系统会创建一个虚拟网络适配器来将模拟器连接到主机,因此您需要将“虚拟网络适配器”的地址提供给“主机文件”,而不是“物理网络适配器”的 IP 地址主机”。

    这是它在网络上的样子

    Computer                               Emulator
    192.168.0.115
    mask: 255.255.255.0
    
    192.168.6.1<-------------------------->192.168.6.2
    mask: 255.255.255.0
    

    所以对于模拟器,192.168.0.115 不存在

    所以在 hosts 文件中,当您的网络浏览器正在侦听每个可能的本地地址(即 0.0.0.0:80)时,请提供地址 192.168.6.1(或任何您的虚拟网络适配器地址)或更改子网掩码因此。我认为前者会是一个很好的解决方案。

    【讨论】:

    • 'ipconfig /all' 是命令(在 cmd 上),它可以帮助您找到虚拟适配器的 IP 地址(我认为这是命令,虽然我不太使用 Windows),也您可以在设备设置中找到模拟设备的 ip,这应该可以帮助您找到子网
    • 在这种情况下,IP 地址没有问题
    【解决方案4】:

    hosts 文件应该是使用 linux 行结束样式编写的。

    在记事本和写字板中都无法做到这一点。尝试安装另一个支持此功能的编辑器,并确保您正确保存了hosts 文件。

    (我尝试过 AkelPad,但 Nodepad++ 也提供了相同的功能)

    大概,不管编码是什么。 Windows-1252 (ANSI)utf-8 都有效。

    完成所有更改后,将hosts 文件推送到设备:

    adb remount
    adb push hosts /system/etc/hosts
    

    确保您拥有正确的hosts 文件,并且它已被加载以及它是否有效:

    adb shell cat /system/etc/hosts
    adb shell ping my.domain.com
    

    从 Genymotion 设备打开浏览器并输入以下内容确保一切正常:

    http://my.domain.com
    

    如果需要,您可以添加端口

    http://my.domain.com:1234
    

    您不需要重新启动 Android 设备。


    如果问题没有解决,请通过直接 ping ip 地址确保它与 hosts 文件本身有关:

    adb shell ping 192.168.x.x
    

    如果有效,则再次检查文件中的行尾。一些文本编辑器可能会混淆它们,使用 Unix 行尾的选项通常只与新文件有关。

    【讨论】:

    • 文件末尾的空行似乎也很重要
    【解决方案5】:

    我遇到了同样的问题。以下解决了它:

    • 确保在主机的最后一个条目之后有一个空行 文件
    • 如果您在 hosts 文件中使用制表符,请将其替换为空格

    重新启动 Android 并重试:

    adb reboot
    

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 2021-11-28
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2011-03-17
      • 2018-07-12
      相关资源
      最近更新 更多