Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Android SDK emulator查看本地托管的项目?_Android_Localhost_Virtualhost - Fatal编程技术网

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

如何使用Android SDK emulator查看本地托管的项目?,android,localhost,virtualhost,Android,Localhost,Virtualhost,我使用PHP和MySQL在OS 10.5.8服务器上开发了我的所有站点,并配置了/etc/hosts和httpd.conf文件,以在该机器上的任何浏览器中显示我的站点example.dev 我最近安装了Android的软件开发工具包,我想用它来开发和测试针对移动Webkit的样式表——但我无法在Android浏览器中访问本地托管的项目 这是有道理的,因为它模拟了整个Android操作系统,但有解决办法吗?或者我可以只测试存在于实际计算机互联网上某个地方的项目,也许是在一个隐藏的目录中 有人建议我

我使用PHP和MySQL在OS 10.5.8服务器上开发了我的所有站点,并配置了
/etc/hosts
httpd.conf
文件,以在该机器上的任何浏览器中显示我的站点
example.dev

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

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

有人建议我编辑我的
/etc/resolv.conf
文件,但我不知道在
resolv.conf
中设置本地托管域格式的正确方法--我尝试了以下各种方法,但没有任何效果:

domain example.dev
nameserver 127.0.0.1
或者

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

127.0.0.1   localhost example.dev example2.dev [etc]
adb pull /system/etc/hosts C:\wherever\you\want\to\save\it

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

您应该能够在android emulator的URL中使用mac的IP地址,并能够通过这种方式访问您的站点。当然,请确保在“系统首选项”中的“共享”下打开了Web共享,并且您的防火墙没有阻止该地址

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

如果出于某种原因,您不希望在URL中使用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

然后从浏览器访问“”。你应该可以走了。

我也遇到过同样的问题@埃姆比的解决方案听起来似乎完全可以满足我的需要,但奇怪的是,它似乎不起作用。命令运行了,但是查看了hosts文件之后发现它实际上没有被更新

但是我做了更多的研究,我发现了问题所在

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

我的猜测是@emmby没有这个问题的原因是,这个问题取决于你在模拟器上安装的Android版本;某些版本可能会为您提供一些可用空间

如果确实存在此问题,解决方案是使用更多存储启动模拟器。这可以通过
emulator
命令的
-partition size
参数完成,如下所示:

emulator -partition-size 128 @MyEmulatedDevice
然后,您可以使用
adb-eshell
命令并根据@emmby的答案编辑文件

但是,如果从shell编辑文件是一件痛苦的事情,
adb
也可以让您将其从模拟器复制到主机操作系统,在本地编辑,然后再次复制备份。它还处理重新装载。你可以这样做:

127.0.0.1   localhost example.dev example2.dev [etc]
adb pull /system/etc/hosts C:\wherever\you\want\to\save\it
然后在你最喜欢的编辑器中编辑它

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

adb remount
adb push C:\wherever\you\saved\hosts /system/etc/hosts
请注意,由于无论何时重新启动仿真器,仿真器都会重置回默认状态,因此这可能是一个更好的解决方案,因为您可以在本地保留编辑的文件,因此您不必每次都重复
adb pull
和编辑步骤;您只需启动emulator,执行
重新装载
推送
,就可以开始工作了


希望对您有所帮助。

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

按照以下两个链接上的说明操作:

(确保注意IP地址和主机名之间的选项卡以及文件底部的换行符) 我做了一个“[SDKLOCATION]/platform tools/adb pull/system/etc/hosts WHATEVERHOSTFILENAME”,首先查看原始hostfile的格式,然后使用它将其推回

然后:


对我有用-祝你好运

我也有同样的问题,这正是我想要的答案。不幸的是,我不能让它工作。这些命令似乎正在运行,但之后的
cat/etc/hosts
显示新行实际上尚未编写。还有什么想法吗?我想我已经解决了我的问题。我将把它作为一个新的答案发布,因为它有点太多,不适合评论。我很想得到它,这样我的模拟器上的foo.dev就能在我的mac上点击localhost:3000。有意义吗?实际上是10.0.2.2,不是10.0.0.2是的,我的错。编辑了答案。谢谢