Ionic Framework:Android 模拟器无法访问主机上的服务
Ionic Framework : Android Emulator unable to access services on host machine
我正在尝试实施 Ionic 示例教程,网址为
http://ccoenraets.github.io/ionic-tutorial/install-ionic.html
我能够在 Android 虚拟设备上部署示例应用程序。但是,该应用无法访问笔记本电脑上托管的 REST 服务。我正在尝试通过将 "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
您可以阅读一些有用的信息here,了解最近的 cordova 更新中的重要变化。
你需要有这个:
<access origin="*" />
在您的 config.xml 文件中设置。
如果您使用的是 android 模拟器,则必须在 10.0.2.2
中更改 localhost
,当然,您必须如果端口与默认值不同,请添加端口:80。
参考here。
如果您使用 Genymotion(比 android 模拟器 好得多),IP 地址将是:10.0.3.2
+ 端口号。
示例
Android 模拟器:http://10.0.2.2:6050/api/checkstatus
Genymotion: http://10.0.3.2:6050/api/checkstatus
如果您想从命令行获得 android 模拟器 运行 的调试信息:
adb -s emulator-5554 logcat
如果您运行在 IIS Express 中连接 Web 服务器,您的请求很可能无法到达主机。
这里有几个选项。我最喜欢的解决方案是使用 iisexpress-proxy.
您可以将其安装为 npm 包:
npm install -g iisexpress-proxy
和运行它指定代理端口:
iisexpress-proxy 6050 to 3000
现在您可以更改模拟器的端口:
Android 模拟器:http://10.0.2.2:3000/api/checkstatus
Genymotion: http://10.0.3.2:3000/api/checkstatus
最好的解决方案可能是使用真实的 android 设备并使用 chrome 检查调试您的应用程序。
你必须:
- 在您的手机上启用 USB 调试
- 在 chrome 浏览器中访问此 link (chrome://inspect/#devices)
一旦您的设备显示在列表中,您可以按 F12 并查看您在浏览器控制台中遇到的错误类型。
您甚至可以使用端口转发将请求转发到内部服务器;基本上,您可以通过要定义的虚拟端口访问笔记本电脑上的托管服务。
我正在尝试实施 Ionic 示例教程,网址为 http://ccoenraets.github.io/ionic-tutorial/install-ionic.html
我能够在 Android 虚拟设备上部署示例应用程序。但是,该应用无法访问笔记本电脑上托管的 REST 服务。我正在尝试通过将 "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
您可以阅读一些有用的信息here,了解最近的 cordova 更新中的重要变化。
你需要有这个:
<access origin="*" />
在您的 config.xml 文件中设置。
如果您使用的是 android 模拟器,则必须在 10.0.2.2
中更改 localhost
,当然,您必须如果端口与默认值不同,请添加端口:80。
参考here。
如果您使用 Genymotion(比 android 模拟器 好得多),IP 地址将是:10.0.3.2
+ 端口号。
示例
Android 模拟器:http://10.0.2.2:6050/api/checkstatus
Genymotion: http://10.0.3.2:6050/api/checkstatus
如果您想从命令行获得 android 模拟器 运行 的调试信息:
adb -s emulator-5554 logcat
如果您运行在 IIS Express 中连接 Web 服务器,您的请求很可能无法到达主机。
这里有几个选项。我最喜欢的解决方案是使用 iisexpress-proxy.
您可以将其安装为 npm 包:
npm install -g iisexpress-proxy
和运行它指定代理端口:
iisexpress-proxy 6050 to 3000
现在您可以更改模拟器的端口:
Android 模拟器:http://10.0.2.2:3000/api/checkstatus
Genymotion: http://10.0.3.2:3000/api/checkstatus
最好的解决方案可能是使用真实的 android 设备并使用 chrome 检查调试您的应用程序。
你必须:
- 在您的手机上启用 USB 调试
- 在 chrome 浏览器中访问此 link (chrome://inspect/#devices)
一旦您的设备显示在列表中,您可以按 F12 并查看您在浏览器控制台中遇到的错误类型。
您甚至可以使用端口转发将请求转发到内部服务器;基本上,您可以通过要定义的虚拟端口访问笔记本电脑上的托管服务。