Anwendungsfehler - Die Verbindung zum Server war nicht erfolgreich. (Datei: ///android_asset/www/index.html)


157

App stirbt beim Start (Verbindung zum Server war nicht erfolgreich)

Ich habe eine Android-Anwendung, die ich mit PhoneGap BUILD schreibe. Die App hat früher gut funktioniert, aber jetzt scheint es, dass ich diesen Fehler erhalte, nachdem ich meine App verfeinert habe (nur einige Änderungen an der Benutzeroberfläche).

1) Wenn ich die App starte, bekomme ich (normalerweise):

Anwendungsfehler - Die Verbindung zum Server war nicht erfolgreich. (Datei: ///android_asset/www/index.html)

Entschuldigung, wenn dies eine Verdoppelung einer Frage ist. Ich habe hier einige ähnliche Fragen gesehen, aber ich konnte keine perfekte Antwort oder Lösung finden. Wie in meinem Fall hat es bis zu meinen letzten Änderungen gut funktioniert.

Antworten:


73

Wie Sie sagten, gibt es viele doppelte Fragen zum gleichen Thema. Wie auch immer, um deine Situation zu erklären.

Das Problem kann gelöst werden, indem Sie eine Zeitüberschreitung hinzufügen, um Ihre index.html aufzurufen

dh Sie müssen super.setIntegerProperty("loadUrlTimeoutValue", 70000);in Ihrer Datei activity.java (in src / com / yourProj / - / youractivity.java) über dieser Zeile Folgendes hinzufügen: super.loadUrl("file:///android_asset/www/index.html");

Erläuterung:

Dies kann aus folgenden Gründen geschehen

Der Hauptgrund: Das Problem ist wahrscheinlich auf die Geschwindigkeit des Emulators zurückzuführen, sodass das Netzwerk zu langsam ist, um die Kommunikation rechtzeitig abzuschließen.

Dies kann folgende Ursachen haben:

  1. Ihr Code / Ihre Daten / Ihr Bild sind zu groß (ich denke, in Ihrem Fall verwenden Sie einige Bilder, da Sie sagten, Sie haben einige Änderungen an der Benutzeroberfläche vorgenommen, möglicherweise ist die Größe der Bilder hoch).
  2. Ihr Skript hat möglicherweise eine Endlosschleife oder eine lange Schleife, sodass das Laden zu lange dauert.
  3. Sie werden zu viele Skripte verwenden (jQuery, iscroll usw. usw. mehr Plugins oder Skripte)

7
In meinem Fall war immer noch ein Skript-Tag vorhanden, das auf eine lokale Instanz von Weinre zeigte. Weinre rannte nicht. Daher - Auszeiten.
Demaniak

Ich erstelle eine App mit Phonegap über devgirl.org/2013/07/17/… dieses Tutorial. Könnten Sie mir bitte sagen, wo ich diese setIntegerproperty habe.
Ashoka Mondal

40
-1 "Das Problem ist wahrscheinlich auf die Geschwindigkeit des Emulators zurückzuführen, sodass das Netzwerk zu langsam ist" - unplausibel, da kein Netzwerk beteiligt ist! Diese URL bezieht sich auf ein lokales Android-Asset.
Chris Stratton

Ich habe dies in meiner Konfigurationsdatei hinzugefügt, aber es funktioniert nicht auf Nexus 5x -
Sa E Chowdary

183

Fügen Sie in Ihrer Datei config.xml die folgende Zeile hinzu:

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

6
Sie sollten dies auch beschreiben
Rohit Gupta

13
Für alle, die sich fragen: Es ist die Zeit in Millisekunden, die beim Laden der Seite gewartet wird, bevor ein Fehler ausgegeben
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />ist besser im Vergleich zu 700000, ich meine, wenn Ihre App nicht in zwei Minuten startet, dann stimmt etwas nicht (und Sie sollten es mit einer anderen Lösung beheben). Sicherlich möchten Sie nicht etwa 11 Minuten warten, um zu sehen, ob eine App verfügbar ist oder nicht! (Deshalb haben wir überhaupt ein Timeout-Konzept, oder? :-)) Laut Dokument ist der Standardwert 20000 (20 Sekunden)
SidMorad

Ich habe dies in meiner Konfigurationsdatei hinzugefügt, aber es funktioniert nicht auf Nexus 5x
Sa E Chowdary

Das ist so seltsam. Ich hatte meine auf 70000 eingestellt und Apps starben nach ungefähr 30 Sekunden Versuch, sie zu laden. Ich habe es auf 120000 geändert und jetzt werden sie in 3-4 Sekunden erfolgreich geladen. Das ist alles was ich geändert habe. Argh.
Brian Knoblauch

24

Hier ist die Arbeitslösung

Erstellen Sie eine neue Seite main.html

Beispiel:

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

Ändern Sie Folgendes in mainactivity.java

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

zu

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

Erstellen Sie jetzt Ihre Anwendung und sie funktioniert bei jeder langsamen Verbindung

Referenz .

HINWEIS: Dies ist eine Problemumgehung, die ich 2013 gefunden habe.


3
Eigentlich benennen Sie einfach Ihre index.html um und erstellen main.html mit window.location = './index.html'. Keine Notwendigkeit, super.loadUrl von MainActivity.java zu ändern
M.Salomaa

4
Gleicher Effekt! Ihre eigentliche Seite wird jedoch in main.html geändert. Aber ich möchte, dass meine eigentliche Seite index.html.BTW ist. Ich denke, Ihr Kommentar ist falsch. Sie müssen umbenennen index.htmlzu main.htmlund erstellen index.htmlSeite, dann fügen window.location = './main.html'. in index.htmlSeite. Das sollte funktionieren.
Robin C Samuel

Ja du hast recht! Ich vermisse die Eingabe: DI bedeutete, dass index.html mit window.location = './main.html' erstellt wurde. :)
M.Salomaa

Warum muss Ihre eigentliche Seite index.html sein?
M. Salomaa

1
@madebydavid Ich habe dies vor 4 Jahren beantwortet. Zu diesem Zeitpunkt gab es keine zuverlässigen Lösungen für die Verzögerung, die beim Laden vieler Skripte verursacht wurde. Die App stürzte also ab, da die Skripte das Laden der Seite verzögerten. Dies funktioniert, weil das main.htmlLight leicht ist und keine Skripte geladen werden müssen, wodurch die App schneller initialisiert und die Skripte dann geladen werden index.html. Das Schließen </head>war ein Tippfehler, der jetzt hinzugefügt wurde.
Robin C Samuel

10

Bitte entfernen Sie remote verknüpfte jQuery-Dateien wie: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

Laden Sie stattdessen diese Datei herunter und laden Sie sie aus Ihrem lokalen js-Ordner. Erstellen Sie dabei den URI:

js/jquery.min.js


6

Entfernen Sie die externen Skripte in Ihrer index.html

Ändere das:

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

zu

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

5

Ich hatte ein ähnliches Problem und basierend auf den obigen Vorschlägen fügte ich zuerst "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000)" hinzu. aber das hat nicht geholfen. Also habe ich Project -> Clean ausprobiert, das hat funktioniert und ich kann die App jetzt starten!

Avinash ...


5

Versuche dies,

1.Benennen Sie Ihre index.html in "main.html" um.

2.Erstellen Sie eine neue "index.html" und fügen Sie den folgenden Inhalt ein:

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

3. Erstellen Sie Ihre App neu! Keine Fehler mehr!


und was soll ich tun, wenn ich einige Argumente wie main.html hinzufügen muss? USER = xxx & SESSION = xxx?
Nourdine Alouane

3
window.location.href = "./ main.html? USER = xxx & SESSION = xxx"
Nithin Krishnan P

Keine Cordova und Plugins werden in main.html
viskin

Ich habe diesen Code hinzugefügt, aber für ca. 1 Minute erscheint nach dem Spritzen ein weißer Bildschirm. Was soll ich machen?
Anjana

4

Ich hatte das gleiche bei meinem Projekt.

Ich habe "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" versucht, aber ohne Erfolg.

Ich habe sichergestellt, dass alle Dateien ordnungsgemäß verknüpft sind [CSS, JS-Dateien usw.], den HTML-Code mit dem w3c-Validator [ http://validator.w3.org/#validate_by_upload ] validiert und das Projekt [Projekt -> Bereinigen] bereinigt.

Es wird jetzt ohne denselben Fehler geladen und ausgeführt.

Hoffe das hilft


4

Durch die Verlängerung des Ladezeitlimits wird das Problem, das den Fehler verursacht hat, nicht behoben. Es wird lediglich vermieden, dass das System die Meldung anzeigt, die Leistung wird jedoch beeinträchtigt.

Tatsächlicher Grund: Möglicherweise verknüpfen Sie Dateien oder Bilder mit Remotestandorten, und das Laden dieser Ressourcen dauert zu lange. (Dies ist wahrscheinlich der häufigste Fehler)

Definitive Lösung: Verschieben Sie alle benötigten Skripte, Bilder und CSS in einige lokale Ordner und laden Sie sie lokal ...

Die Leistung wird gesteigert und Fehler werden effektiv behoben.


4

Um dies in einer ionischen App zu beheben, fügen Sie einfach hinzu

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

in Ihre config.xml-Datei unmittelbar nach dieser Zeile

<platform name="android">

3

Überprüfen Sie Ihre index.htmlDatei. Wenn Sie externe Ressourcen verwenden, die beim Ausführen der Anwendung nicht verfügbar sind, kann dieser Fehler auftreten.

In meinem Fall habe ich vergessen, den Link im Debugger-Skript (weinre) zu löschen.

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

Die Anwendung funktionierte also mit dem Emulator, da sie http://192.168.0.102:8080/sich auf meinem lokalen Host befand und für den Emulator verfügbar war.

Beim Einrichten der Anwendung auf einem Mobiltelefon trat jedoch der gleiche Fehler auf, da 192.168.0.102 nicht über das Mobilfunknetz verfügbar war.


1

In meinem Fall verwende ich ionic und habe einfach den Dialog geschlossen, bin zu Apps im Emulator gegangen und habe stattdessen meine App von dort ausgeführt. Das hat funktioniert. Ich kam von hier auf die Idee, da es nur eine Auszeit war.


1

Wenn Sie Visual Studio verwenden. Nach dem Ändern von config.xml benötigen Sie dies manchmal

Clean Build-Lösung Erstellen Sie Ihre App neu

Es funktioniert für mich.


1

In meinem Fall war das Problem auf den Verlust der Internetverbindung in meinem WLAN zurückzuführen.


1

Ich stand vor dem gleichen Problem. Ich habe festgestellt, dass ich in meinem Index sowohl die Funktion "On Device Ready" als auch die Funktion "Document.ready" hatte. Das Entfernen einer dieser Funktionen hat mein Problem behoben :)


-8

Ein weiterer Grund, warum dieser Fehler auftreten kann, ist: Es gibt kein index.htmlIn .../YourApp/www/!

Ich habe gerade die Ionenführung befolgt und einer der Schritte ist:

$ rm www/index.html

Unter iOS ist dies kein Problem, da der Compiler während des Builds stattdessen Standard-HTML verwendet. Beim Erstellen für Android wird jedoch KEIN Beispiel index.htmlverwendet. Ich habe einige Zeit gebraucht, um das herauszufinden ("WARUM funktioniert es unter iOS, aber nicht unter Android ...?)

Einfache Lösung: Erstellen Sie eine index.html, speichern Sie sie unter .../YourApp/www, erstellen Sie sie neu ... et voila!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.