离子框架:Android模拟器无法访问主机上的服务



我正在尝试实现可用的离子样本教程http://ccoenraets.github.io/ionic-tutorial/install-ionic.html

我能够在Android虚拟设备上部署示例应用程序。但是,该应用程序无法访问笔记本电脑上托管的休息服务。我正在尝试通过将" Localhost"更改为" 10.0.2.2"来访问该服务。我还在config.xml

中添加了以下内容

<access origin="*"/>

有人可以让我知道如何解决这个问题?

如果您使用的是Cordova的最新版本之一,则必须安装Cordova Plugin Whitelist:

cordova plugin add cordova-plugin-whitelist

如果使用选项--save,它将在您的 config.xml 文件中添加一个部分:

cordova plugin add cordova-plugin-whitelist --save

您可以在此处阅读有关Cordova最近更新中重要更改的一些有用信息。

您需要拥有此:

<access origin="*" />

在您的 config.xml 文件中设置。

如果您使用的是 Android Emulator 您必须在10.0.2.2中更改localhost,当然,如果端口与默认值不同,则必须添加端口:80。

参考此处。

如果您使用的genymotion(比Android Emulator好得多)IP地址将为:10.0.3.2 端口num。

样本

Android Emulator :http://10.0.2.2:6050/api/checkstatus
GENYMOTION :http://10.0.3.2:6050/api/checkstatus

如果您想为Android Emulator提供调试Infos,请从命令行运行此操作:

adb -s emulator-5554 logcat

如果您正在运行 IIS Express 的Web服务器,则可能是您的请求无法到达主机。这里有一些选择。我最喜欢的解决方案是使用iisexpress-proxy。
您可以将其安装为NPM软件包:

npm install -g iisexpress-proxy

并运行它指定代理端口:

iisexpress-proxy 6050 to 3000

现在您可以更改模拟器的端口:

Android Emulator :http://10.0.2.2:3000/api/checkstatus
GENYMOTION :http://10.0.3.2:3000/api/checkstatus

最好的解决方案是使用真实的Android设备并使用Chrome Inspect进行调试。

您必须:

  • 在您的手机上启用USB调试
  • 请访问Chrome浏览器中的此链接( Chrome://Inspect/#设备

一旦设备显示在列表中,您就可以点击F12,然后查看您在浏览器控制台中获得的错误。

您甚至可以使用端口转发请求到内部服务器;基本上,您可以通过要定义的虚拟端口访问笔记本电脑上的托管服务。

最新更新