使用 cordova 时,离子应用程序不会在服务器上命中
Ionic app doesn't hit on server when using cordova
我的 Ionic 应用程序在 运行 ionic serve 时工作正常但是当我使用命令 ionic cordova 运行 android --livereload 它没有命中服务器并给出错误
"Failed to load resource: net::ERR_CONNECTION_REFUSED "
以下是离子信息
Ionic CLI : 4.12.0
Ionic Framework : @ionic/angular 4.4.2
@angular-devkit/build-angular : 0.13.9
@angular-devkit/schematics : 7.3.9
@angular/cli : 7.3.9
@ionic/angular-toolkit : 1.5.1
科尔多瓦:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.0.0
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.1, (and 4 other plugins)
效用:
cordova-res : not installed
native-run : 0.2.7
系统:
NodeJS : v10.16.0 (C:\Program Files\nodejs\node.exe)
npm : 6.9.2
OS : Windows 10
config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<plugin name="cordova-plugin-whitelist" spec="1.3.3" /><br>
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.0" /> //latest version
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
</widget>
下面是我在移动设备上部署时得到的快照
这是我得到的错误
这种情况下的一个选择是不传递用于 livereload 功能的 -l/-livereload。所以只是 运行:
ionic cordova run android
这将编译 apk 并将其部署到您的 phone,但不会 运行 用于监视更改的 Web 服务器。
在这种情况下,您仍然可以使用 Chrome 进行调试,但是如果您对标记进行了更改并按保存,它不会自动重新加载该更改的应用程序。您需要再次 运行 ionic cordova run android
来重建并将其部署到您的 phone.
优点 1:首次部署后,后续构建速度更快,因为启动了 gradle 服务器。
优点 2:如果您断开 USB,您仍然可以使用您的应用程序。使用 livereload 部署的应用程序,一旦断开连接,它就会中断。
其实我也很想解决你的问题。当我在联合办公空间四处走动时,有时网络似乎以某种方式被锁定并且只是阻塞了某些端口。我还没有弄清楚为什么或者是否有解决方法。
临时解决方法是设置 base href="."在 index.html 中。
但是你的图标不会被加载。
永久修复:
ionic cordova platform remove android
ionic cordova platform add android@7.1.0
ionic cordova plugin remove cordova-plugin-ionic-webview
ionic cordova plugin add cordova-plugin-ionic-webview@latest
您需要一些东西来代理来自 android 设备的 localhost:8080 请求返回到您的 livereload 服务器所在的开发箱 运行。
您可以通过 chrome 浏览器的端口转发来完成此操作,方法是在您的开发箱上打开 chrome://inspect/#devices
,或者直接在 phone 的连接属性本身上配置端口转发.我用它在 windows 开发箱上通过 Fiddler 观看流量。
此外,离子 livereload 服务器可以配置为路由 non-ionic 流量,方法是配置 service proxies。
我的 Ionic 应用程序在 运行 ionic serve 时工作正常但是当我使用命令 ionic cordova 运行 android --livereload 它没有命中服务器并给出错误 "Failed to load resource: net::ERR_CONNECTION_REFUSED " 以下是离子信息
Ionic CLI : 4.12.0
Ionic Framework : @ionic/angular 4.4.2
@angular-devkit/build-angular : 0.13.9
@angular-devkit/schematics : 7.3.9
@angular/cli : 7.3.9
@ionic/angular-toolkit : 1.5.1
科尔多瓦:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.0.0
Cordova Plugins : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 4.1.1, (and 4 other plugins)
效用:
cordova-res : not installed
native-run : 0.2.7
系统:
NodeJS : v10.16.0 (C:\Program Files\nodejs\node.exe)
npm : 6.9.2
OS : Windows 10
config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name>
<description>An awesome Ionic/Cordova app.</description>
<author email="hi@ionicframework.com" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<plugin name="cordova-plugin-whitelist" spec="1.3.3" /><br>
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.0" /> //latest version
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
</widget>
下面是我在移动设备上部署时得到的快照
这是我得到的错误
这种情况下的一个选择是不传递用于 livereload 功能的 -l/-livereload。所以只是 运行:
ionic cordova run android
这将编译 apk 并将其部署到您的 phone,但不会 运行 用于监视更改的 Web 服务器。
在这种情况下,您仍然可以使用 Chrome 进行调试,但是如果您对标记进行了更改并按保存,它不会自动重新加载该更改的应用程序。您需要再次 运行 ionic cordova run android
来重建并将其部署到您的 phone.
优点 1:首次部署后,后续构建速度更快,因为启动了 gradle 服务器。
优点 2:如果您断开 USB,您仍然可以使用您的应用程序。使用 livereload 部署的应用程序,一旦断开连接,它就会中断。
其实我也很想解决你的问题。当我在联合办公空间四处走动时,有时网络似乎以某种方式被锁定并且只是阻塞了某些端口。我还没有弄清楚为什么或者是否有解决方法。
临时解决方法是设置 base href="."在 index.html 中。 但是你的图标不会被加载。
永久修复:
ionic cordova platform remove android
ionic cordova platform add android@7.1.0
ionic cordova plugin remove cordova-plugin-ionic-webview
ionic cordova plugin add cordova-plugin-ionic-webview@latest
您需要一些东西来代理来自 android 设备的 localhost:8080 请求返回到您的 livereload 服务器所在的开发箱 运行。
您可以通过 chrome 浏览器的端口转发来完成此操作,方法是在您的开发箱上打开 chrome://inspect/#devices
,或者直接在 phone 的连接属性本身上配置端口转发.我用它在 windows 开发箱上通过 Fiddler 观看流量。
此外,离子 livereload 服务器可以配置为路由 non-ionic 流量,方法是配置 service proxies。