从Android模拟器访问虚拟主机

时间:2011-02-28 12:03:51

标签: android titanium appcelerator

我正在开发一个简单的应用程序,它连接到在Apache中配置为虚拟主机的Web服务,因此其URL为myapp.localhost

在我的开发机器(Mac OS X)中,我可以访问它,也可以从iPhone模拟器访问它。 但我从Android模拟器遇到问题,它无法访问该URL,因为它没有使用我的/ etc / hosts文件来解析“myapp.localhost”域名。

由于我使用的是Appcelerator Titanium(appcelerator.com),我无法使用“adb”将自定义主机文件注入Android模拟器。

我是否可以在Mac OS X系统中安装DNS服务器或其类似内容来为Android模拟器翻译该虚拟主机?

1 个答案:

答案 0 :(得分:8)

我想你最终找到了解决问题的方法。不过,我会为那些寻求解决的人提供一个可能的答案,努力解决我们曾经遇到的同样问题。

由于Android设备是模拟的而不是模拟的(而不是iOS设备),因此它们确实拥有自己的内核,配置文件......以及它们自己的/system/etc/hosts。但你实际上可以使用带有Titanium的adb。你只需要小心。由于Titanium使用基于tiapp.xml的自定义生成的虚拟设备,因此在虚拟设备显示在设备列表中之前,您必须至少运行一次应用程序。

如果您拥有的不仅仅是虚拟设备,首先需要获取Titanium生成的设备名称(通常是模拟器-XXXX)。

adb devices

然后你可以安装它并使用adb push和pull命令从模拟器的系统中取出/system/etc/hosts,编辑它并将其推回。 -s emulator-XXXX指定要在哪些设备上执行这些命令。如果只有一个设备,则可以跳过此选项。有关更多信息,请参阅adb doc

adb -s emulator-XXXX remount
adb -s emulator-XXXX pull /system/etc/hosts /whatever/directory/

您现在可以使用自己喜欢的编辑器编辑/whatever/directory/hosts并添加必要的主机。如果需要访问开发计算机的localhost接口,10.0.2.2是计算机环回接口的链接。只需将10.0.2.2 myapp.localhost添加到主机并将其推回虚拟设备即可。

adb -s emulator-XXXX push /whatever/directory/hosts /system/etc/hosts

使用Titanium重新启动模拟器,它应该可以解决问题!