我可以在 Android 模拟器中执行哪些操作以将其连接到位于 http://localhost
或 http://127.0.0.1
的本地主机 Web 服务器页面?
我试过了,但模拟器仍然接受我的请求,就像谷歌搜索本地主机一样,或者更糟糕的是,它说在我的网络服务器正常运行时它没有找到该页面。
本地主机是指运行代码的设备,在本例中是模拟器。
如果要引用运行 Android 模拟器的计算机,请改用 IP 地址 10.0.2.2。
https://i.stack.imgur.com/m9eBE.png
您可以从 here 了解更多信息。
//i.stack.imgur.com/6mhd8.png
10.0.3.2
吗?
我在家用机器上成功使用了 10.0.2.2,但是在工作中,它不起作用。经过几个小时的闲逛,我使用 Android Virtual Device (AVD) 管理器创建了一个新的模拟器实例,最后 10.0.2.2 工作了。
我不知道另一个模拟器实例出了什么问题(平台是一样的),但是如果你发现 10.0.2.2 不起作用,请尝试创建一个新的模拟器实例。
尝试 http://10.0.2.2:8080/
,其中 8080
是您的端口号。它工作得很好。如果您只是尝试 10.0.2.2
,它将无法正常工作。您需要为其添加端口号。此外,如果已安装 Microsoft IIS,请尝试从控制面板关闭该功能(如果使用任何 Windows 操作系统),然后按上述方法尝试。
每次运行模拟器时,您实际上可以使用 localhost:8000
连接到机器的本地主机(仅在 Mac 上测试):
adb reverse tcp:8000 tcp:8000
只需将其放到 Android Studio 终端即可。
它基本上设置了一个反向代理,其中运行在您手机上的 http 服务器接受端口上的连接并将它们连接到您的计算机,反之亦然。
对于我的 Mac OS 山狮设备:
http://10.0.2.2:8888
完美运行!
我需要找出模拟器“Nox App Player”的系统主机 IP 地址。这是我发现它是 172.17.100.2
的方法。
从应用商店安装 Android Terminal Emulator 发出 ip link show 命令以显示所有网络接口。特别感兴趣的是 eth1 接口 Issue ifconfig eth1 命令,显示 net as 172.17.100.15/255.255.255.0 Begin ping 地址从 172.17.100.1 开始,在“172.17.100.2”上命中。不确定防火墙是否会干扰,但在我的情况下没有
也许这可以帮助其他人为其他模拟器解决这个问题。
如果您使用 Android 模拟器:
您可以通过这些 IP 连接到您的 PC 本地主机:10.0.2.2:{port of your localhost}
=>如果您在 xamp 中设置机器端口,则必须使用该端口。在我的情况下10.0.2.2:2080
https://i.stack.imgur.com/ZhU2d.jpg
https://i.stack.imgur.com/ttFEX.png
您也可以使用您的网络适配器 IP。在 CMD 中写入 ipconfig
并找到您的适配器 IP 地址:
https://i.stack.imgur.com/kLwNK.png
https://i.stack.imgur.com/0U4L9.png
如果模拟器无法连接到此 IP,请关闭模拟器并通过 AVD Manager 中的 cold boot
打开它:
https://i.stack.imgur.com/lga0n.png
如果您使用 Genymotion :
您可以通过此 IP 连接到机器 localhost:10.0.3.2:{port number}
或您的适配器 IP 地址,如上所述:在我的情况下:192.168.1.3:2080
允许安装 PWA
首先,安装Android调试桥:
$ sudo apt install adb android-sdk-platform-tools-common
像往常一样启动你的安卓模拟器,例如:
$ ~/Android/Sdk/emulator/emulator -avd Pixel_3a_API_30_x86
只有这样,在 Android 模拟器的网桥上配置一个 reverse proxy,它将 localhost
HTTP 请求转发到您的主机上运行的 localhost
服务器的适当端口(例如 8000),反之亦然:
$ adb reverse tcp:8000 tcp:8000
在 localhost:8000
或 127.0.0.1:8000
上提供的渐进式 Web 应用程序 (PWA) 可以安装并连接到其 service-worker.js
。而不允许从 IP 地址 10.0.2.2
安装 PWA。
警告: adb reverse tcp:8000 tcp:8000
需要在每次 Android 模拟器调用后重新发布。
因此,启动 Android 模拟器的 bash 脚本,后跟反向代理,如下所示:
#!/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
如果您在 Windows 中,您可以转到 simbol 系统并编写 ipconfig 并检查分配给您的机器的 ip。
接受的答案是正确的,但在我的情况下不起作用。我必须在关闭主机上的公司 VPN 客户端的情况下创建虚拟设备。这是可以理解的,因为许多公司网络使用以 10 开头的地址(私有网络范围),这可能会干扰特殊地址 10.0.2.2
对于任何试图访问本地 IIS 服务器 (ASP.NET) 的人
对我来说,接受的答案还不够。我必须在 applicationhost.config 中添加 127.0.0.1 的绑定,这是我的 ASP.NET 解决方案的根目录。
另一种解决方法是从 no-ip.org 获取一个免费域并将其指向您的本地 IP 地址。然后,您可以尝试使用 http://yourdomain.no-ip.org/yourwebservice
,而不是使用 http://localhost/yourwebservice
我不知道,也许这个话题已经解决了,但是当我最近尝试在 Windows 机器上做这个时,我遇到了很多困难。所以我的解决方案非常简单。我已经下载了这个软件 http://www.lenzg.net/rinetd/rinetd.html,按照他们关于如何进行端口转发的说明,然后成功地将我的 android 设备连接到制作 asp.net localhost 项目并在我的断点处停止。
我的 rinetd.conf 文件:
10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82
其中 10.1.1.20 是我的 localhost ip,82 和 1234 是我的端口 另外我已经创建了浴缸文件,以便于使用 yournameofbathfile.bat,将该文件放在 rinedfolder 中。我的沐浴档案:
rinetd.exe -c rinetd.conf
启动此软件后,启动您的 aps.net 服务器并尝试从 android 设备或本地网络中的任何设备访问(例如 Computer ABC 启动 putty),您将看到一切正常。无需去路由器设置或做任何其他复杂的事情。我希望这能帮到您。享受。