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

Posted

技术标签:

【中文标题】应用程序错误 - 与服务器的连接不成功。 (文件:///android_asset/www/index.html)【英文标题】:Application Error - The connection to the server was unsuccessful. (file:///android_asset/www/index.html) 【发布时间】:2012-09-01 10:30:34 【问题描述】:

应用程序在启动时死机(连接到服务器不成功)

我有一个使用 PhoneGap BUILD 编写的 android 应用程序。该应用程序之前运行良好,但现在似乎在优化我的应用程序后出现此错误(仅限一些 UI 更改)

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

应用程序错误 - 与服务器的连接不成功。 (file:///android_asset/www/index.html)

对不起,如果这是任何问题的重复。我在这里看到了一些类似的问题,但我找不到完美的答案或解决方案。在我的情况下,它工作正常,直到我最后一次更改。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

你也应该描述一下 对于任何想知道的人:这是加载页面时在引发错误之前等待的时间(以毫秒为单位):cordova.apache.org/docs/en/latest/config_ref/index.html &lt;preference name="loadUrlTimeoutValue" value="120000" /&gt; 比 700000 更好,我的意思是如果您的应用程序在两分钟内没有出现,那么就有问题(您应该使用其他解决方案来修复它)。 Surly 你不想等待大约 11 分钟来查看应用程序是否启动!(这就是为什么我们首先有超时概念,对吧?:-))根据文档,默认值为 20000 (20 秒) 我在我的配置文件中添加了这个,但它在 nexus 5x 上不起作用 这太奇怪了。我将我的设置为 70000,在尝试加载大约 30 秒后,应用程序就死机了。我将其更改为 120000,现在它们在 3-4 秒内成功加载。这就是我改变的一切。啊。【参考方案2】:

正如你所说,同一个主题有很多重复的问题。怎么解释你的情况。

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

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

说明:

这可能是由于以下原因而发生的

核心原因:问题可能是模拟器速度太慢导致网络太慢,及时完成通讯。

这可能是由于:

    您的代码/数据/图像过大(我猜在您的情况下您使用了一些图像,正如您所说您进行了一些 UI 修改,可能是图像的大小很大) 您的脚本可能有无限循环或很长的循环,因此加载时间过长。 您将使用过多的脚本(jQuery、iscroll 等。更多的插件或脚本)

【讨论】:

我的情况是,我仍然有一个脚本标签指向 Weinre 的本地实例。温热没有跑。因此 - 超时。 我正在通过devgirl.org/2013/07/17/… 本教程使用phonegap 创建应用程序。你能告诉我这个 setIntegerproperty 在哪里。 -1 “问题可能是由于模拟器的速度,所以网络太慢了” - 难以置信,因为没有涉及网络!本地 android 资产。 我在我的配置文件中添加了这个,但它不适用于 nexus 5x –【参考方案3】:

这是可行的解决方案

创建一个新页面 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");

现在构建您的应用程序,它适用于任何慢速连接

refernce.

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

【讨论】:

实际上,您只需重命名 index.html 并使用 window.location = './index.html' 创建 main.html。无需从 MainActivity.java 更改 super.loadUrl 效果一样!但是您的实际页面将更改为 main.html。但我希望我的实际页面是 index.html.BTW,我认为您的评论是错误的。您需要将index.html 重命名为main.html 并创建一个index.html 页面,然后添加window.location = './main.html'。在index.html 页面中。这应该有效。 是的,你说得对!我想念那个:D 我的意思是用 window.location = './main.html' 创建 index.html。 :) 为什么你的实际页面需要 index.html? @madebydavid 我在 4 年前回答了这个问题。那时,没有可靠的解决方案来处理由于要加载大量脚本而导致的延迟。因此,由于脚本延迟了页面加载,该应用程序崩溃了。这是因为main.html 很轻,没有要加载的脚本,因此可以更快地初始化应用程序,然后在index.html 上加载脚本。结尾的 &lt;/head&gt; 是一个错字,现在添加。【参考方案4】:

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

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

js/jquery.min.js

【讨论】:

【参考方案5】:

删除 index.html 中的外部脚本

改变这个:

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

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

【讨论】:

【参考方案6】:

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

阿维纳什...

【讨论】:

【参考方案7】:

试试这个,

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 该怎么办? window.location.href="./main.html?USER=xxx&SESSION=xxx" 没有cordova和插件被注入main.html 我已添加此代码,但大约 1 分钟后,启动后出现白屏。我该怎么办?【参考方案8】:

在离子应用程序上解决这个问题,只需添加

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

到您的 config.xml 文件,紧跟在这一行之后

<platform name="android">

【讨论】:

【参考方案9】:

我的项目也是这样。

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

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

它现在加载和执行没有相同的错误。

希望对你有帮助

【讨论】:

【参考方案10】:

延长加载超时限制并不能解决导致错误的问题,它只是避免系统显示消息,但无论如何都会影响性能。

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

最终解决方案:将需要的所有脚本、图片和css移动到一些本地文件夹并加载到本地...

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

【讨论】:

【参考方案11】:

检查您的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。

【讨论】:

【参考方案12】:

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

【讨论】:

【参考方案13】:

在我的情况下,我使用的是 ionic,我只是关闭了对话框,转到模拟器中的应用程序,然后从那里运行我的应用程序。这行得通。我从这里得到了这个想法,因为这只是一个超时问题。

【讨论】:

【参考方案14】:

如果您使用的是视觉工作室。更改 config.xml 后有时你需要这个

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

它对我有用。

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

这是一个非常小众的情况,但我想我会把它贴在这里,以防其他人节省我花在兜圈子上的时间。

在尝试了 cordova-android@10.0.1 后,我恢复到了 cordova-android@9.1,并在尝试以开发模式运行我的应用程序时开始出现此错误。

我忘记的是,当我升级到 10.0.1 时,我必须删除白名单插件,因为它现在是 cordova-android 的一部分。

恢复 cordova-plugin-whitelist 让我一切都恢复正常!

【讨论】:

【参考方案17】:

可能发生此错误的另一个原因是:.../YourApp/www/ 中没有 index.html

我只是跟着ionic guide,其中一个步骤是:

$ rm www/index.html

ios 上这没有问题,因为在构建过程中编译器会采用一些默认的 HTML。但是,在为 android 构建时,不使用示例 index.html。花了我一些时间才知道(“为什么它在 iOS 上可以工作,但在 android 上不行……?)

简单的解决方案:创建一个 index.html,将其保存在 .../YourApp/www 下,然后重新构建......等等!

【讨论】:

以上是关于应用程序错误 - 与服务器的连接不成功。 (文件:///android_asset/www/index.html)的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight - “与服务器的连接不成功”

在C#里连接SQL 2008 报错:已成功与服务器建立连接 但登录前握手期间发生错误 网络名不可再用

Appium 服务器未与模拟器建立连接

sql server 2008启动时:已成功与服务器建立连接,但是在登录过程中发生错误。(provider:命名管道提供程序,error:0-管道的另一端上无任何进程。)(Microsoft SQL

SQL Server -- 已成功与服务器建立连接,但是在登录过程中发生错误

与服务器成功建立连接,但在登录前握手期间发生错误。 (提供者:SSL 提供者,错误:0