我可以在Android模拟器中做什么来将它连接到我的本地主机web服务器页面http://localhost或http://127.0.0.1?

我已经尝试过了,但模拟器仍然需要我的请求,如谷歌搜索localhost或更糟糕的是,它说,它没有找到页面,而我的web服务器正常运行。


当前回答

公认的答案是正确的,但对我的情况不适用。我必须在主机上关闭公司VPN-client的情况下创建虚拟设备。这是完全可以理解的,因为许多公司网络使用以10开头的地址(专用网络范围),这可能会干扰特殊地址10.0.2.2

其他回答

如果你使用Android模拟器:

您可以通过以下ip连接到您的Pc localhost: 10.0.2.2:{你的本地主机端口}=>如果你在xamp中设置了你的机器端口,你必须使用这个端口。在我的例子中是10.0.2.2:2080

你也可以使用你的网络适配器IP地址。在CMD中输入ipconfig并找到你的适配器IP地址:

如果模拟器不能连接到这个ip,关闭模拟器,并从AVD管理器冷引导打开它:

如果您使用Genymotion:

您可以通过此IP: 10.0.3.2:{端口号}连接到计算机localhost 或者如上所述的适配器IP地址:在我的示例中是192.168.1.3:2080

对于我的Mac OS mountain Lion设备:

http://10.0.2.2:8888

工作完美!

允许安装PWA

首先,安装Android调试桥:

$ sudo apt install adb android-sdk-platform-tools-common

像往常一样启动你的Android模拟器,例如:

$ ~/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86

然后,在Android模拟器的网桥上配置反向代理,将localhost HTTP请求转发到运行在主机计算机上的localhost服务器的适当端口(例如8000),反之亦然:

$ adb reverse tcp:8000 tcp:8000

一个渐进web应用程序(PWA)正在localhost:8000上提供服务 或者127.0.0.1:8000将是可安装的,并连接到它的service-worker.js。而PWA安装不允许从IP地址10.0.2.2。

注意:adb reverse tcp:8000 tcp:8000需要在每次Android模拟器调用后重新发布。

因此,一个bash脚本启动一个Android模拟器,后面跟着一个反向代理,看起来像这样:

#!/usr/bin/env bash

$HOME/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86 > /dev/null 2>&1

adb reverse tcp:8000 tcp:8000

尝试http://10.0.2.2:8080/,其中8080是端口号。它工作得很完美。如果你只是尝试10.0.2.2,它不会工作。需要添加端口号。此外,如果Microsoft IIS已安装,请尝试从控制面板关闭该功能(如果使用任何windows操作系统),然后尝试如上所述。

默认AVD使用10.0.2.2,genymotion使用10.0.3.2。