我从this tutorial.构建一个简单的离子项目
它可以在小米Mix 2手机(Android 8.0.0版)和浏览器上正常运行。 但是当我将其部署到三星Note 2(Android版本4.4.2)时, 它通过以下消息给出了应用程序错误: net :: ERR_CONNECTION_REFUSED(http://localhost:8080)
为什么会出现此错误?
任何建议都将受到赞赏。
Kemal。
答案 0 :(得分:3)
我在Android 4.4,Android 6.0中遇到了相同的问题,但在Android 8.0中却没有。我只是在config.xml中添加了此代码以允许localhost。
using System.Reflection;
using System.Collections.Concurrent;
using System.Linq;
...
var connMan = Clients.All.GetType().GetField("_lifetimeManager", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(Clients.All);
var connsObj = connMan.GetType().GetField("_connections", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(connMan);
ConcurrentDictionary<string, HubConnectionContext> conns = (ConcurrentDictionary<string, HubConnectionContext>)connsObj.GetType().GetField("_connections", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(connsObj);
Console.WriteLine("Current connections: " + String.Join(",", conns.Values.ToList().Select(i => i.ConnectionId)));
有关更多信息,请点击以下链接: WKWebView
答案 1 :(得分:2)
您的问题是由cordova-plugin-ionic-webview
插件引起的,该插件是每个新的或更新的Ionic应用程序的一部分。
这曾经只适用于iOS,用WKWebView代替了UIWebView,但是在2018年7月23日,他们发布了插件的2.0版本,其中还包括对Android上使用的webview的更改。
Android网络视图现在使用localhost:8080
上的本地网络服务器来显示您的应用,而不是直接从文件系统中请求文件。
不幸的是,此更改还包括了文档中的以下内容:
Requirements
- […]
- Android: Android 5.0+ and cordova-android 6.4+
所以cordova-plugin-ionic-webview
不再支持5.0之前的Android,这当然意味着您的应用将无法在Android 4.x上运行。
一种解决方案是将插件降级为支持Android 4.x的最新版本:
ionic cordova plugin add cordova-plugin-ionic-webview@1.2.1
更多详尽的信息和替代解决方案:
https://ionic.zone/debug/ionic-and-android-4
答案 2 :(得分:0)
您会收到此错误,因为Android中的每个功能和模块都只能在更新的某个版本中使用。它可能是4.4.3及更高版本,5.0及更高版本,甚至是8.0及更高版本。这只是取决于。这意味着,如果以及在部署它时,将要求您选择最低版本。除了尝试使用较新的版本外,您无法做任何修复。您也可以完全更改代码以使用较旧的模块。
答案 3 :(得分:0)
即使在新设备上,我也有同样的错误。之后,我重新安装了cordova-plugin-ionic-webview
插件。重新安装将插件从4.0.0升级到5.0.0,并将新行添加到config.xml
:
<allow-navigation href="http://localhost:8100" sessionid="f8f1cc34" />
我仍在等待审查,但希望这会有所帮助。
答案 4 :(得分:0)
万一仍然无法解决此错误,
cordova plugin rm cordova-plugin-ionic-webview
cordova plugin add cordova-plugin-ionic-webview@4.1.3
npm install @ionic-native/ionic-webview
cordova platforms remove android
ionic cordova build android
或者,如果您使用离子型,
ionic cordova platforms remove android
ionic cordova build android
其他信息:插件版本cordova-plugin-ionic-webview@4.1.3
适用于以下cordova和android版本:
Cordova CLI : 9.0.0 (cordova-lib@9.0.1)
Cordova Platforms : android 8.1.0
Android target : android-28
Android SDK Tools : 26.1.1
cordova-android : 8.1.0
答案 5 :(得分:0)
我这个问题持续了好几天,发现的所有解决方案都行不通。
Ionic建议使用Capacitor而不是Cordova来构建应用程序。使用Cordova不能正常工作,另一方面使用Capacitor可以正常工作。
在您的应用目录中,首先删除Android文件夹(如果有的话),然后删除Platform / Android文件夹中的那个。
我在Powershell停留在APP目录中时按以下顺序使用了这些命令
ionic build
ionic capacitor add android
npx cap open android
第一个命令将创建一个www文件夹。 如果最后一个命令给出了错误并且没有打开Android Studio,请手动执行(我建议使用4.0版本)。打开Android Studio→打开文件夹,导航到APP文件夹中名为Android的文件夹,然后对我有用。在Android Sudio 4中,确保已更新Gradle并加载了SDK。