应用程序错误-与服务器的连接失败。(文件:///android_asset/www/index.html)


157

应用程序在启动时死(与服务器的连接失败)

我有一个使用PhoneGap BUILD编写的Android应用程序。该应用程序之前运行良好,但现在看来,在优化我的应用程序后,我收到了此错误(仅某些UI更改)

1)当我启动应用程序时,我通常会得到:

应用程序错误-与服务器的连接失败。(文件:///android_asset/www/index.html)

很抱歉,如果这是任何问题的重复。我在这里看到过类似的问题,但是找不到完美的答案或解决方案。就我而言,直到我最后一次更改,它都可以正常工作。

Answers:


73

如您所说,关于同一主题有很多重复的问题。任何如何解释你的情况。

可以通过添加超时来调用index.html来解决问题

也就是说,您需要super.setIntegerProperty("loadUrlTimeoutValue", 70000);在此行上方添加您的activity.java文件(在src / com / yourProj /-// youractivity.java中): super.loadUrl("file:///android_asset/www/index.html");

说明:

可能由于以下原因而发生

核心原因:问题很可能是由于仿真器的速度所致,因此网络太慢,无法及时完成通信。

这可能是由于:

  1. 您的代码/数据/图像的尺寸太大(我想您是在使用某些图像,因为您说过您对UI进行了一些修改,可能图像的尺寸很大)
  2. 您的脚本可能具有无限循环或较长循环,因此加载时间太长。
  3. 您将使用过多的脚本(jQuery,iscroll等。更多数量的插件或脚本)

7
我的情况是,我仍然有一个脚本标记指向Weinre的本地实例。Weinre没有运行。因此-超时。
demaniak

我正在通过devgirl.org/2013/07/17/…使用phonegap创建应用程序。你能告诉我这个setIntegerproperty在哪里。
Ashoka Mondal 2013年

40
-1“问题可能是由于仿真器的速度,所以网络太慢”-令人难以置信,因为没有网络参与!该网址是本地android资产。
克里斯·斯特拉顿

我在配置文件中添加了此文件,但不适用于Nexus 5x –
Sa E Chowdary

183

在您的config.xml文件中添加以下行:

<preference name="loadUrlTimeoutValue" value="700000" />

6
您也应该对此进行描述
Rohit Gupta 2015年

13
对于任何想知道的人:这是加载页面之前在引发错误之前等待的时间(以毫秒为单位):cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />相比700000更好,我的意思是,如果您的应用在两分钟内没有启动,则说明存在问题(您应该使用其他解决方案进行修复)。当然,您不想等待大约11分钟来查看应用程序是否正在运行!(这就是为什么我们首先有超时概念的原因,对吗?:-))根据文档,默认值为20000 (20秒)
SidMorad

我在配置文件中添加了此文件,但不适用于Nexus 5x
Sa E Chowdary

太奇怪了 我将我的设置为70000,尝试加载大约30秒后,应用程序快死了。我将其更改为120000,现在它们在3-4秒内成功加载。这就是我所做的一切。啊
Brian Knoblauch

24

这是工作解决方案

创建一个新页面main.html

例:

<!doctype html>
<html>
  <head>
   <title>tittle</title>
   <script>
     window.location='./index.html';
   </script>
  </head>
  <body>
  </body>
</html>

在mainactivity.java中更改以下内容

super.loadUrl("file:///android_asset/www/index.html");

super.loadUrl("file:///android_asset/www/main.html");

现在构建您的应用程序,它可以在任何缓慢的连接上运行

参考

注意:这是我在2013年发现的解决方法。


3
实际上,您只是重命名index.html并使用window.location ='./index.html'创建main.html。无需从MainActivity.java更改super.loadUrl
M.Salomaa 2014年

4
效果一样!但是您的实际页面将更改为main.html。但我希望我的实际页面是index.html.BTW,我认为您的评论是错误的。您需要重命名index.htmlmain.html并创建一个index.html页面,然后添加 window.location = './main.html'。在index.html页面中。这应该工作。
罗宾C塞缪尔

是的,你正确的!我错过了输入一个:DI的意思,即使用window.location ='./main.html'创建index.html。:)
M.Salomaa 2014年

为什么需要实际页面为index.html?
M.Salomaa 2014年

1
@madebydavid我在4年前就回答了。那时,还没有可靠的解决方案来处理由于要加载大量脚本而引起的延迟。由于脚本延迟了页面加载,因此应用程序崩溃了。这之所以有效,main.html是因为该工具比较轻并且没有脚本要加载,因此可以更快地初始化应用程序,然后在上加载脚本index.html。结束语</head>是一个错字,现在添加了。
罗宾C塞缪尔

10

请删除远程链接的jQuery文件,例如: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

相反,下载此文件并从本地js文件夹加载它,并制作URI:

js/jquery.min.js


6

删除index.html中的外部脚本

更改此:

<script src="http://code.highcharts.com/highcharts-more.js"></script>

<script src="project_folder/highcharts-more.js"></script>

5

我遇到了类似的问题,根据上述建议,我首先添加了“ super.setIntegerProperty(“ loadUrlTimeoutValue”,70000);” 但这没有帮助。因此,我尝试了Project-> Clean,它起作用了,现在可以启动该应用程序了!

阿维纳什...


5

试试这个,

1.将您的index.html重命名为“ main.html”

2.创建一个新的“ index.html”,并将以下内容放入其中:

<!doctype html>
<html>
  <head>
   <title>tittle</title>
   <script>
     window.location='./main.html';
   </script>
  <body>
  </body>
</html>

3.重建您的应用程序!没有更多的错误!


如果我必须添加诸如main.html之类的参数,应该怎么办?USER = xxx&SESSION = xxx?
Nourdine Alouane,2015年

3
window.location.href =“ ./ main.html?USER = xxx&SESSION = xxx”
Nithin Krishnan P 2015年

没有cordova和插件被注入main.html
viskin '16

我已添加此代码,但在大约1分钟后,启动后出现白屏。我该怎么办?
Anjana

4

我的项目也一样。

我尝试了“ super.setIntegerProperty(“ loadUrlTimeoutValue”,70000);”,但无济于事。

我确保所有文件都正确链接[CSS,JS文件等],并使用w3c验证程序[ http://validator.w3.org/#validate_by_upload验证了HTML ],并清理了项目[Project-> Clean]

现在,它加载并执行时没有相同的错误。

希望这可以帮助


4

延长加载超时限制不会解决导致错误的问题,只会避免系统显示此消息,但性能会受到任何影响。

实际原因:您可能将文件或图像链接到远程位置,并且这些资源加载时间太长。(这可能是最常见的错误)

最终解决方案:将所需的所有脚本,图像和CSS移至某些本地文件夹,然后将其本地加载...

性能将得到提高,错误将得到有效解决。


4

将其修复在离子应用程序上,只需添加

<preference name="loadUrlTimeoutValue" value="700000" />

在此行之后立即转到您的config.xml文件

<platform name="android">

3

检查您的index.html文件。如果您使用外部资源,那么在运行应用程序时该资源不可用,那么您会收到此错误。

就我而言,我忘记删除调试器脚本(weinre)上的链接。

<script src="http://192.168.0.102:8080/target/target-script-min.js#anonymous"></script>

因此应用程序可以在模拟器http://192.168.0.102:8080/上运行,因为它在我的本地主机上并且可用于模拟器。

但是,当我在手机上安装应用程序时,我遇到了同样的错误,因为无法从移动网络获得192.168.0.102。


1

就我而言,我使用的是ionic,我只是关闭了对话框,进入了模拟器中的应用程序,然后从那里运行了我的应用程序。这工作了。我从这里得到了这个主意,因为这只是一个超时问题。


1

如果您使用的是Visual Studio。更改config.xml之后,有时您需要这个

干净的构建解决方案重建您的应用

它为我工作。


1

就我而言,问题是由于我的WiFi失去了互联网连接。


1

我面临着同样的问题。我注意到在索引中,我同时具有“设备准备就绪”和“ document.ready”功能,因此删除其中之一可以解决我的问题:)


-8

可能会出现此错误的另一个原因是:有没有index.html.../YourApp/www/

我只是遵循离子指南,步骤之一是:

$ rm www/index.html

在iOS上,这没有问题,因为在构建过程中,编译器会采用一些默认的HTML。但是,在为Android构建时,没有示例index.html。花了一段时间找到我(“为什么它在iOS上有效,但在Android上却无效...?)

简单的解决方案:创建index.html,保存在.../YourApp/www,然后重建...等等!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.