1

我对这个很沮丧。我有一个为我的 Android 应用程序运行服务源的开发 Web 服务器。我可以从任意数量的机器上浏览到它。

在 AVD 上(我已经尝试过不同的版本)我重新挂载 rw 并拉取、编辑然后将主机文件推回系统/etc/hosts。在 DDMS 中,我看到更新的日期,如果我把它拉回来,更改就在那里。

此外,如果我转到命令提示符,然后运行 ​​adb shell 并 ping 测试主机名,我会从正确的 ip 得到回复。所以为什么??????avd浏览器不会加载页面。哦,是的页面。显示“是”我正在工作的纯 HTML。

最后,如果我不浏览到 html 页面,那很好,但由于我需要我的应用程序来查询我的服务(托管在同一站点)以进行开发和测试,我认为这将是一个很好的连接测试,然后再尝试拥有我的应用程序向服务发出请求。

难住了。......


解决了!!!

我的 Windows 背景让我编辑一个带有 IP 的主机文件,然后是选项卡,然后是主机名。好吧,我遵循了一些让我从 adb shell 编辑主机的说明。成功了……嗯???所以我拉出文件并在 Edit+ 中打开,却发现我正在射击自己的脚。ip 和主机名之间只有*ONE空格。它现在工作得很好。

4

4 回答 4

1

我的 Windows 背景让我编辑一个带有 IP 的主机文件,然后是选项卡,然后是主机名。好吧,我遵循了一些让我从 adb shell 编辑主机的说明。成功了……嗯???所以我拉出文件并在 Edit+ 中打开,却发现我正在射击自己的脚。ip 和主机名之间只有 *ONE 空格。它现在工作得很好。如果有疑问,我强烈建议您在不将文件拉到桌面的情况下更新您的主机文件。这是来自 shell 的命令。

./adb -s [DeviceID] shell
echo '###.###.###.###   [HostName/URl]' >> /etc/hosts
exit

注意上述命令并非每个步骤都需要从 shell 实际编辑文件的命令。你仍然需要有写权限等。

于 2013-01-02T16:50:05.007 回答
1

在 Windows 主机文件中,它允许在 IP 地址和主机名之间有多个空格(制表符),但在 android 主机文件中,它需要在 IP 和主机名之间有一个空格。我尝试使用带有单个条目的主机文件,其中 IP 和主机名使用 notepad++ 由单个空格字符分隔。但是问题仍然存在,即我无法在模拟器中打开该站点。

您可以找到将本地机器的主机文件推送到 android 模拟器的步骤 -> http://borkweb.com/story/setting-etchosts-on-an-android-emulator-using-a-mac

但是模拟器仍然无法使用这个被解析为的主机文件->我试过这个(工作):1.在模拟器中推送了一个空的主机文件 2.使用 adb shell echo 命令编辑了同一个主机文件

#adb shell    
#echo '172.30.1.227 fat.choice.plus' >> system/etc/hosts    
#echo '\n172.30.1.227 static-fat.loyrewards.com' >> system/etc/hosts    
  • 在上述命令中使用您的 IP 地址和主机名
  • 要退出 adb shell,请使用快捷键 Ctrl + D 您可以使用 \n 字符作为换行符通过 echo 添加多个条目。模拟器现在可以使用这个修改后的主机文件,并且站点已成功加载。:-)
于 2017-06-14T09:43:46.320 回答
1

在我的特殊情况下,本地主机子域在 android 模拟器浏览器上给出了这个问题(即使我可以 ping 域),我在我的 macOS 10.14 上使用了下一个映射:

10.0.2.2    something.localhost

摆脱 localhost 为我解决了这个问题。我不知道为什么在我的 Mac 上会发生这种情况,我无法在 Ubuntu 18.04 上重现这种行为

于 2019-03-18T18:58:01.470 回答
0

最简单的方法和简单的答案是:

它是主机文件中每一行的行尾(EOL)字符。EOL 应该是 linux(LF) 的 EOL。空格或制表符的数量无关紧要。

要转换 EOL 字符,您可以在 notepad++ 中按照以下步骤操作:编辑-> EOL 转换-> Linux(LF)。

验证:查看 -> 显示符号 -> 显示行尾。

在您的主机文件中验证上述内容后,只需将其推送到模拟器即可。

使用以下命令确保您的主机文件在模拟器上被替换:

adb 推送 ./hosts /etc/hosts

adb push ./hosts /system/etc/hosts

adb push ./hosts /etc/system/hosts

注意:您需要让您的模拟器在写入模式下运行。

于 2021-04-22T10:32:12.417 回答