如何使用Android SDK模拟器查看本地托管的项目?

时间:2009-08-24 02:34:15

标签: android localhost virtualhost

我使用PHP和MySQL在OS 10.5.8服务器上开发我的所有站点,并且我已经配置了/etc/hostshttpd.conf个文件以在example.dev中显示我的站点那台机器上的浏览器。

我最近安装了Android的软件开发工具包,我想用它来开发和测试针对移动Webkit的样式表 - 但是我无法在Android浏览器中访问我本地托管的项目。

这是有道理的,因为它模仿整个Android操作系统,但是有解决方法吗?或者我可以只测试存在于实际计算机互联网上的项目,也许是在隐藏目录中?

有人建议我编辑我的/etc/resolv.conf文件,但我不知道在resolv.conf中格式化本地托管域的正确方法 - 我尝试了以下的变体,而没有任何内容工作原理:

domain example.dev
nameserver 127.0.0.1

或者...

domain example.dev
nameserver localhost

在我的主机文件中,它设置如下:

127.0.0.1   localhost example.dev example2.dev [etc]

5 个答案:

答案 0 :(得分:13)

您应该能够在Android模拟器的URL中使用您的mac的IP地址,并能够以这种方式访问​​您的网站。当然,请确保在“系统偏好设置”中的“共享”下打开“网络共享”,并且防火墙未阻止该地址。

或者,您可以使用虚拟主机IP地址10.0.2.2。在运行模拟器时,它将始终映射到主机mac。

如果由于某种原因您不想在网址中使用IP地址,则可以通过修改模拟器中的/ etc / hosts将Mac的IP地址映射到您选择的任何名称。为此,您需要先对文件系统进行读写,然后将您的mac的IP和您想要的任何主机名添加到/ etc / hosts中:

adb -e shell
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
# echo '10.0.2.2      cat-yodeling.local' >> /etc/hosts

然后从浏览器访问“http://cat-yodeling.local”。你应该好好去。

答案 1 :(得分:7)

我遇到了同样的问题。 @ emmby的解决方案听起来应该完全符合我的需要,但奇怪的是它似乎没有用。这些命令已经运行,但之后查看hosts文件显示它实际上没有被更新。

但我做了一些研究,我已经解决了问题所在。

我遇到的核心问题是仿真设备的操作系统已经占用了100%的可用存储空间,因此编辑没有写入主机文件。但是,也没有给出错误消息。

我的猜测是@emmby没有出现此问题的原因是因为问题因您放置在模拟器上的Android版本而异;某些版本可能会为您提供一些可用空间。

如果确实遇到此问题,解决方法是启动具有更多存储空间的模拟器。这可以使用-partition-size命令的emulator参数来完成,如下所示:

emulator -partition-size 128 @MyEmulatedDevice

然后您可以使用adb -e shell命令并根据@ emmby的答案编辑文件。

但是,如果从shell编辑文件很麻烦,adb还可以让您将其从仿真器复制到主机操作系统,在本地编辑它,然后再将其复制回来。它还涉及重新安装。你会这样做:

adb pull /system/etc/hosts C:\wherever\you\want\to\save\it

然后在您喜欢的编辑器中编辑它。

然后将模拟器重新安装到读/写模式,并将文件复制回来:

adb remount
adb push C:\wherever\you\saved\hosts /system/etc/hosts

请注意,由于仿真器在重新启动时会重置为默认状态,因此这可能是更好的解决方案,因为您可以将编辑后的文件保留在本地,因此您不必重复adb pull和每次编辑步骤;您只需启动模拟器,执行remountpush,即可开展业务。

希望有所帮助。

答案 2 :(得分:2)

我通过在本地网络中使用计算机IP地址解决了类似的问题。

答案 3 :(得分:2)

根据android docs,您可以在仿真器上使用10.0.2.2访问系统127.0.0.1 IP,这是主机环回接口的特殊别名。

答案 4 :(得分:2)

按照以下两个链接中的说明进行操作:

http://www.codingonstilts.com/2012/04/android-emulator-hosts-file-entry.html(请务必注意IP地址与主机名和文件底部换行符之间的标签) 我做了一个“[SDKLOCATION] / platform-tools / adb pull / system / etc / hosts WHATEVERHOSTFILENAME”,先查看原始主机文件的格式,然后用它将其推回。

然后: http://www.codingonstilts.com/2012/06/sync-os-x-hosts-file-to-android.html

适合我 - 祝你好运!!