Fop*_*tin 450 android localhost loopback-address android-emulator
我可以在Eclipse的Android模拟器中将它连接到我的localhost Web服务器页面http://localhost或在http://127.0.0.1?
我已经尝试过了,但是仿真器仍然像Google搜索localhost一样接受我的请求,或者更糟糕的是它说我的网络服务器正常运行时没有找到该页面.
Pri*_*han 769
localhost指的是运行代码的设备,在本例中是模拟器.
如果要引用运行Android模拟器的计算机,请改用IP地址10.0.2.2.您可以从这里阅读更多内容.
小智 28
我在家用机器上成功使用了10.0.2.2,但是在工作中它没有用.经过几个小时的鬼混,我使用Android虚拟设备(AVD)管理器创建了一个新的模拟器实例,最后10.0.2.2工作了.
我不知道其他模拟器实例有什么问题(平台是相同的),但是如果发现10.0.2.2不起作用,请尝试创建一个新的模拟器实例.
小智 19
试试你的端口号http://10.0.2.2:8080/在哪里8080.它工作得很好.如果你只是尝试10.0.2.2它将无法正常工作.您需要为其添加端口号.此外,如果已安装Microsoft IIS,请尝试从控制面板关闭该功能(如果使用任何Windows操作系统),然后尝试上面给出的.
Nij*_*dli 10
您实际上可以localhost:8000通过在每次运行模拟器时运行以下命令来连接到您机器的本地主机(仅在 Mac 上测试):
adb reverse tcp:8000 tcp:8000
Run Code Online (Sandbox Code Playgroud)
只需将其放入 Android Studio 终端即可。
它基本上设置了一个反向代理,其中运行在您手机上的 http 服务器接受端口上的连接并将它们连接到您的计算机,反之亦然。
尽管阅读了这里和其他地方的所有答案,但我还是花了几个小时来尝试调试这个问题,因为10.0.2.2即使在 Chrome 浏览器中,该地址也不起作用。如果您遇到同样的情况,这里有一个分步指南,可帮助您尝试调试并希望解决您的问题。
在模拟的 Android 中,转到“设置”>“WiFi”,检查它是否连接到 AndroidWiFi 热点(代表您的主机),然后单击底部的“高级”,然后检查网关地址:它应该指向 10.0.2.2 。如果没有,那么您遇到了另一个问题,也许更改代理设置可以解决您的问题,请参阅此处自 2022 年以来如何使用 Android Studio 执行此操作,因为代理设置现已隐藏:如何在新版本的 Android 中的模拟器中配置代理工作室?
只需打开网络浏览器并键入http://localhost:<port>即可查看您的本地网络应用程序是否可以访问。如果没有,那么您的本地服务器参数可能有问题。
打开 Chrome 浏览器,并将其指向http://10.0.2.2:<port>(对于 genymotion,替换为http://10.0.3.2:<port>)。如果您的网络应用程序出现,那就太好了,您就完成了。如果没有,请测试以下其他步骤以查明根本问题。
如果您的 Web 应用程序可以从主机访问,但不能在模拟器内部访问,则根本原因可能是您的本地服务器出于某种原因(可能是出于安全原因)限制对某些接口的访问。
要检查这一点,请尝试使用其他服务器,只需一个简单的 HTTP 服务器即可,例如http-server使用nodejs或python -m http.server 8000Python 3。
然后,尝试从模拟器的 Chrome 浏览器(例如http://10.0.2.2:8000. 如果有效,则确认您的本地服务器限制对某些接口的访问。您需要阅读本地服务器的文档以扩大权限。
例如,在我的例子中,我的服务器是angular-cli(AngularJS),它默认限制仅向本地主机提供服务。为了使其工作,我必须使用ng serve --disable-host-check --host 0.0.0.0而不是仅仅使用ng serve,如另一个问题中所建议的。--host 0.0.0.0 指示网络服务器为所有接口提供服务。类似的参数可以提供给大多数网络服务器。
另一种方法可能是禁用一些未使用的适配器,尤其是 VPN 等虚拟适配器。
现在,您的 Web 应用程序应该可以使用 Chrome 应用程序通过 URL 从模拟器内部访问http://10.0.2.2:<port>。最后一个难题是在您的 Android 应用程序中添加访问 10.0.2.2 的权限,尤其是如果您的本地网络服务器未配备 SSL 证书(这是本地开发网络服务器最有可能出现的情况 - 只需检查是否有效https://localhost:<port>或仅http://localhost:<port>从主机)。这将允许您的 Android 应用程序访问您的本地网络服务器,就像 Chrome 一样。
http://自 Android 9 (API 28) 及以上版本起,需要添加特定权限以从 Android 应用程序访问明文(即)。有多种方法可以配置您的 Android 应用程序以添加此权限,请参阅: https: //stackoverflow.com/a/50834600/1121352
从 Android 模拟器访问主机可能很棘手,但通过仔细的逐步调试,在大多数情况下可以克服该问题。
本教程仅涵盖从 Android 模拟器内部访问/到达主机上的本地 Web 服务器的问题,但一旦修复此问题,即使可以访问,Web 应用程序也可能仍然无法正常运行。一个例子是体验无限的加载循环。要在解决可达性后进一步调试问题,您可以chrome://inspect在 Chrome 浏览器中使用附加到 Android 模拟器内的 Android WebView 并实时调试它,就像它在您的计算机上呈现一样。
最后一种选择(可能更快)是付费订阅 ngrok 等服务,但免费版本毫无用处,因为它们必须在 Android 应用程序的 Web 视图之外的 Web 浏览器中打开 Web 应用程序。
您可以通过这些 IP 连接到您的 PC 本地主机:
10.0.2.2:{port of your localhost}=> 如果您在 xamp 中设置了计算机端口,则必须使用该端口。就我而言10.0.2.2:2080
您也可以使用您的网络适配器 IP。在 CMD 中写入ipconfig并找到您的适配器 IP 地址:
如果模拟器无法连接到此 IP,请关闭模拟器并通过cold bootAVD Manager 打开它:
您可以通过此 IP 连接到计算机本地主机:10.0.3.2:{port number}
或者您的适配器 IP 地址,如我上面所解释的:在我的情况下:192.168.1.3:2080
| 归档时间: |
|
| 查看次数: |
322139 次 |
| 最近记录: |