Errore dell'applicazione: la connessione al server non è riuscita. (File: ///android_asset/www/index.html)


157

L'app muore all'avvio (la connessione al server non è riuscita)

Ho un'applicazione Android che sto scrivendo usando PhoneGap BUILD. L'app funzionava bene prima, ma ora sembra che stia ricevendo questo errore dopo aver perfezionato la mia app (solo alcune modifiche all'interfaccia utente)

1) Quando avvio l'app (di solito) ottengo:

Errore dell'applicazione: la connessione al server non è riuscita. (File: ///android_asset/www/index.html)

Scusa se questa è la duplicazione di qualsiasi domanda. Ho visto alcune domande simili qui, ma non sono riuscito a trovare una risposta o una soluzione perfetta. Come nel mio caso, ha funzionato bene fino alle mie ultime modifiche.

Risposte:


73

Come hai detto, ci sono molte domande duplicate sullo stesso argomento. Qualsiasi spiegazione della tua situazione.

Il problema potrebbe essere risolto aggiungendo un timeout per chiamare il tuo index.html

cioè devi aggiungere il super.setIntegerProperty("loadUrlTimeoutValue", 70000);tuo file activity.java (dentro src / com / yourProj / - / youractivity.java) sopra questa linea: super.loadUrl("file:///android_asset/www/index.html");

Spiegazione:

Ciò può essere dovuto ai seguenti motivi

Il motivo principale: il problema è probabilmente dovuto alla velocità dell'emulatore, quindi la rete è troppo lenta per completare la comunicazione in modo tempestivo.

Ciò può essere dovuto a:

  1. Il tuo codice / dati / immagine è di dimensioni eccessive (suppongo che nel tuo caso tu stia usando alcune immagini, come hai detto che hai apportato alcune modifiche all'interfaccia utente, potrebbe essere la dimensione delle immagini è alta)
  2. Lo script potrebbe avere un ciclo infinito o lungo, in modo che il caricamento richieda troppo tempo.
  3. Utilizzerai troppi script (jQuery, iscroll, ecc. Ecc. Più numero di plugin o script)

7
Quello che è successo nel mio caso è che avevo ancora un tag script che puntava a un'istanza locale di Weinre. Weinre non stava correndo. Quindi - timeout.
demaniak,

Sto creando un'app usando phonegap tramite devgirl.org/2013/07/17/… questo tutorial. Potresti per favore dirmi dove devo questo setIntegerproperty.
Ashoka Mondal,

40
-1 "il problema è probabilmente dovuto alla velocità dell'emulatore, quindi la rete è troppo lenta" - non plausibile, poiché nessuna rete è coinvolta! L'URL è indirizzato a un asset Android locale.
Chris Stratton,

ho aggiunto questo nel mio file di configurazione, ma non funziona su Nexus 5x -
Sa E Chowdary

183

Nel tuo file config.xml aggiungi questa riga:

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

6
Dovresti anche descrivere questo
Rohit Gupta,

13
Per chiunque si chieda: è il tempo in millisecondi atteso durante il caricamento della pagina prima di lanciare un errore: cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach

13
<preference name="loadUrlTimeoutValue" value="120000" />è migliore rispetto a 700000, intendo se la tua app non verrà visualizzata entro due minuti, quindi c'è qualcosa di sbagliato (e dovresti risolverlo utilizzando un'altra soluzione). Sicuramente non vuoi aspettare circa 11 minuti per vedere se un'app sta arrivando o meno! (Ecco perché abbiamo in primo luogo il concetto di timeout, giusto? :-)) Secondo il documento, il valore predefinito è 20000 (20 secondi)
SidMorad,

ho aggiunto questo nel mio file di configurazione, ma non funziona su Nexus 5x
Sa E Chowdary

Questo è così strano. Avevo impostato il mio su 70000 e le app stavano morendo dopo circa 30 secondi di tentativi di caricamento. L'ho cambiato in 120000 e ora si caricano correttamente in 3-4 secondi. Questo è tutto ciò che ho cambiato. Argh.
Brian Knoblauch,

24

Ecco la soluzione funzionante

crea una nuova pagina main.html

esempio:

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

cambia quanto segue in mainactivity.java

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

per

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

Ora crea la tua applicazione e funziona su qualsiasi connessione lenta

refernce .

NOTA: questa è una soluzione alternativa che ho trovato nel 2013.


3
In realtà basta rinominare index.html e creare main.html con window.location = './index.html'. Non è necessario cambiare super.loadUrl da MainActivity.java
M.Salomaa

4
Stesso effetto! Ma la tua pagina attuale verrà cambiata in main.html. Ma voglio che la mia pagina sia effettivamente index.html.BTW, penso che il tuo commento sia sbagliato. È necessario rinominare index.htmlper main.htmle creare una index.htmlpagina, quindi aggiungere window.location = './main.html'. nella index.htmlpagina. Questo dovrebbe funzionare.
Robin C Samuel,

Si hai ragione! Mi manca quello digitato: DI significa che crea index.html con window.location = './main.html'. :)
M.Salomaa

Perché hai bisogno che la tua pagina reale sia index.html?
M.Salomaa,

1
@madebydavid Ho risposto a 4 anni fa. A quel punto, non c'erano soluzioni affidabili per gestire il ritardo causato dal caricamento di molti script. L'app si è arrestata in modo anomalo poiché gli script hanno ritardato il caricamento della pagina. Questo funziona perché main.htmlè leggero e non ha script da caricare, quindi inizializza l'app più velocemente e quindi carica gli script index.html. La chiusura è </head>stata un refuso, aggiunta ora.
Robin C Samuel,

10

Rimuovere i file jQuery collegati in remoto come: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

Invece, scarica questo file e caricalo dalla tua cartella js locale, creando l'URI:

js/jquery.min.js


6

Rimuovi gli script esterni da index.html

Cambia questo:

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

per

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

5

Ho avuto un problema simile e in base ai suggerimenti precedenti ho aggiunto per la prima volta "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" ma questo non ha aiutato. Quindi ho provato Project -> Clean, ha funzionato e ora posso avviare l'app!

Avinash ...


5

Prova questo,

1. Rinominare il tuo index.html in "main.html"

2. Creare un nuovo "index.html" e inserire il seguente contenuto:

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

3.Crea la tua app! Niente più errori!


e cosa devo fare se devo aggiungere alcuni argomenti come main.html? USER = xxx & SESSION = xxx?
Nourdine Alouane,

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

Nessun cordova e plugin vengono iniettati in main.html
viskin

Ho aggiunto questo codice ma per circa 1 minuto, dopo lo splash, verrà visualizzata una schermata bianca. Cosa dovrei fare?
Anjana,

4

Ho avuto lo stesso sul mio progetto.

Ho provato "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" ma inutilmente.

Ho assicurato che tutti i file fossero collegati correttamente [CSS, file JS ecc.], Convalidato l'HTML usando il validatore w3c [ http://validator.w3.org/#validate_by_upload ] e pulito il progetto [Progetto -> Pulisci]

Ora carica ed esegue senza lo stesso errore.

Spero che questo ti aiuti


4

L'estensione del limite di timeout di caricamento non risolverà il problema che ha causato l'errore, eviterà semplicemente al sistema di mostrare il messaggio ma le prestazioni ne risentiranno.

Motivo effettivo: è possibile che si stiano collegando file o immagini a posizioni remote e il caricamento di tali risorse impiega troppo tempo. (questo è probabilmente l'errore più comune)

Soluzione definitiva: sposta tutti gli script, le immagini e i css necessari in alcune cartelle locali e caricali localmente ...

Le prestazioni saranno aumentate e l'errore sarà efficacemente risolto.


4

risolvendolo su un'app ionica, aggiungi semplicemente

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

nel tuo file config.xml subito dopo questa riga

<platform name="android">

3

Controlla il tuo index.htmlfile. Se si utilizzano risorse esterne, non disponibili quando si esegue l'applicazione, è possibile ottenere questo errore.

Nel mio caso ho dimenticato di eliminare il collegamento sullo script del debugger (weinre).

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

Quindi l'applicazione ha funzionato sull'emulatore perché http://192.168.0.102:8080/era sul mio localhost e disponibile per l'emulatore.

Ma quando ho installato l'applicazione sul cellulare ho avuto lo stesso errore, perché 192.168.0.102 non era disponibile dalla rete mobile.


1

Nel mio caso sto usando ionico e ho semplicemente chiuso la finestra di dialogo è andato alle app nell'emulatore e ho eseguito la mia app da lì. Questo ha funzionato. Ho avuto l'idea di questo da qui dato che era solo un problema di timeout.


1

Se stai usando Visual Studio. Dopo aver cambiato config.xml a volte è necessario questo

soluzione clean build ricostruisci la tua app

Funziona per me.


1

Nel mio caso, il problema era dovuto alla perdita della connessione Internet nel mio WiFi.


1

Stavo affrontando lo stesso problema. Ho notato che nel mio indice avevo sia la funzione "su dispositivo pronto" sia la funzione "document.ready", quindi rimuoverne uno risolto il mio problema :)


-8

Un altro motivo potrebbe verificarsi questo errore è: non c'è index.htmlin .../YourApp/www/!

Ho appena seguito la guida ionica e uno dei passaggi è:

$ rm www/index.html

Su iOS questo non è un problema poiché durante la compilazione il compilatore accetta invece un HTML predefinito. Tuttavia, quando si costruisce per Android, NON index.htmlviene utilizzato alcun esempio . Mi ha richiesto qualche volta per scoprire ("PERCHÉ funziona su iOS, ma non su Android ...?)

Soluzione semplice: crea un index.html, salvalo sotto .../YourApp/www, ricostruisci ... e voilà!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.