Error de aplicación: la conexión al servidor no se realizó correctamente. (archivo: ///android_asset/www/index.html)

157

La aplicación se apaga al inicio (la conexión al servidor no se realizó correctamente)

Tengo una aplicación de Android que estoy escribiendo usando PhoneGap BUILD. La aplicación funcionaba bien antes, pero ahora parece que recibo este error después de refinar mi aplicación (solo algunos cambios en la interfaz de usuario)

1) Cuando inicio la aplicación, generalmente obtengo:

Error de aplicación: la conexión al servidor no se realizó correctamente. (archivo: ///android_asset/www/index.html)

Lo siento si esto es duplicación de alguna pregunta. He visto algunas preguntas similares aquí, pero no pude encontrar una respuesta o solución perfecta. Como en mi caso, estaba funcionando bien hasta mis últimos cambios.

gitsitgo
fuente

Respuestas:

73

Como dijiste, hay muchas preguntas duplicadas sobre el mismo tema. De todos modos explicando tu situación.

El problema podría resolverse agregando un tiempo de espera para llamar a su index.html

es decir, debe agregar super.setIntegerProperty("loadUrlTimeoutValue", 70000);su archivo activity.java (dentro de src / com / yourProj / - / youractivity.java) sobre esta línea: super.loadUrl("file:///android_asset/www/index.html");

Explicación:

Esto puede suceder debido a las siguientes razones

La razón principal: el problema probablemente se deba a la velocidad del emulador, por lo que la red es demasiado lenta para completar la comunicación de manera oportuna.

Esto puede deberse a:

  1. Su código / datos / imagen es demasiado grande (supongo que en su caso está usando algunas imágenes, ya que dijo que realizó algunas modificaciones en la interfaz de usuario, puede ser que el tamaño de las imágenes sea alto)
  2. Su secuencia de comandos puede tener un bucle infinito o largo, por lo que lleva demasiado tiempo cargar.
  3. Utilizará demasiados scripts (jQuery, iscroll, etc., etc. más cantidad de complementos o scripts)
AnhSirk Dasarp
fuente
77
Lo que sucedió en mi caso es que todavía tenía una etiqueta de script que apuntaba a una instancia local de Weinre. Weinre no estaba corriendo. Por lo tanto, tiempos de espera.
demaniak
Estoy creando una aplicación usando phonegap a través de devgirl.org/2013/07/17/… este tutorial. ¿Podría decirme dónde tengo esta propiedad setInteger?
Ashoka Mondal
40
-1 "es probable que el problema se deba a la velocidad del emulador, por lo que la red es demasiado lenta". ¡Imposible, ya que no hay red involucrada! Esa URL es para un activo local de Android.
Chris Stratton
Agregué esto en mi archivo de configuración, pero no funciona en Nexus 5x -
Sa E Chowdary
183

En su archivo config.xml agregue esta línea:

<preference name="loadUrlTimeoutValue" value="700000" />
Soufiene
fuente
66
También deberías describir esto
Rohit Gupta
13
Para cualquiera que se pregunte: es la cantidad de tiempo en milisegundos que se espera mientras se carga la página antes de lanzar un error: cordova.apache.org/docs/en/latest/config_ref/index.html
Cedric Reichenbach
13
<preference name="loadUrlTimeoutValue" value="120000" />es mejor en comparación con 700000, es decir, si su aplicación no aparece en dos minutos, entonces hay algo mal (y debe solucionarlo utilizando otra solución). ¡No quieres esperar unos 11 minutos para ver si aparece una aplicación o no! (Es por eso que tenemos el concepto de tiempo de espera en primer lugar, ¿verdad? :-)) Según el documento, el valor predeterminado es 20000 (20 segundos)
SidMorad
Agregué esto en mi archivo de configuración, pero no funciona en nexus 5x
Sa E Chowdary
Esto es tan extraño. Tenía el mío configurado en 70000, y las aplicaciones estaban muriendo después de unos 30 segundos de intentar cargar. Lo cambié a 120000 y ahora se cargan con éxito en 3-4 segundos. Eso es todo lo que cambié. Argh
Brian Knoblauch
24

Aquí está la solución de trabajo.

crear una nueva página main.html

ejemplo:

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

cambie lo siguiente en mainactivity.java

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

a

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

Ahora crea tu aplicación y funciona en cualquier conexión lenta

referencia .

NOTA: Esta es una solución que encontré en 2013.

Robin C Samuel
fuente
3
En realidad, simplemente cambia el nombre de su index.html y crea main.html con window.location = './index.html'. No es necesario cambiar super.loadUrl de MainActivity.java
M.Salomaa
44
Mismo efecto! Pero su página real se cambiará a main.html. Pero quiero que mi página sea index.html.BTW, creo que tu comentario es incorrecto. Necesita cambiar el nombre index.htmlde main.htmly crear una index.htmlpágina, a continuación, añadir window.location = './main.html'. en la index.htmlpágina Esto debería funcionar.
Robin C Samuel
¡Si, tienes razón! Eché de menos ese: DI significaba que crear index.html con window.location = './main.html'. :)
M.Salomaa
¿Por qué necesita que su página real sea index.html?
M.Salomaa
1
@madebydavid Respondí esto hace 4 años. En ese momento, no había soluciones confiables para manejar el retraso causado cuando hay muchos scripts para cargar. Por lo tanto, la aplicación se bloqueó ya que los scripts retrasaron la carga de la página. Esto funciona porque main.htmles liviano y no tiene scripts para cargar, inicializando así la aplicación más rápido y luego cargando los scripts index.html. El cierre </head>fue un error tipográfico, agregado ahora.
Robin C Samuel
10

Elimine los archivos jQuery vinculados de forma remota, como: https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

En su lugar, descargue este archivo y cárguelo desde su carpeta js local, haciendo que el URI:

js/jquery.min.js

sharma_kunal
fuente
6

Elimine los scripts externos en su index.html

Cambia esto:

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

a

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

Tuve un problema similar y, según las sugerencias anteriores, primero agregué "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" Pero eso no ayudó. Así que probé Project -> Clean, ¡funcionó y puedo iniciar la aplicación ahora!

Avinash ...

Avinash
fuente
5

Prueba esto,

1. Cambie el nombre de su index.html a "main.html"

2.Cree un nuevo "index.html" y agregue el siguiente contenido:

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

3. ¡Reconstruye tu aplicación! ¡No más errores!

Nithin Krishnan P
fuente
¿Y qué debo hacer si tengo que agregar algunos argumentos como main.html? USER = xxx & SESSION = xxx?
Nourdine Alouane
3
window.location.href = "./ main.html? USER = xxx & SESSION = xxx"
Nithin Krishnan P
No se inyectaron cordova ni complementos en main.html
viskin
He agregado este código, pero durante aproximadamente 1 minuto, aparece una pantalla blanca después de la presentación. ¿Qué tengo que hacer?
Anjana
4

Tenía lo mismo en mi proyecto.

Intenté "super.setIntegerProperty (" loadUrlTimeoutValue ", 70000);" pero fue en vano.

Me aseguré de que todos los archivos estuvieran vinculados correctamente [CSS, archivos JS, etc.], validé el HTML usando el validador w3c [ http://validator.w3.org/#validate_by_upload ] y limpié el proyecto [Proyecto -> Limpiar]

Ahora se carga y ejecuta sin el mismo error.

Espero que esto ayude

Deano
fuente
4

Extender el límite de tiempo de espera de carga no resolverá el problema que causó el error, solo evitará que el sistema muestre el mensaje, pero el rendimiento se verá afectado en absoluto.

Razón real: puede estar vinculando archivos o imágenes a ubicaciones remotas, y esos recursos tardan demasiado en cargarse. (este es probablemente el error más común)

Solución definitiva: mueva todos los scripts, imágenes y CSS necesarios a algunas carpetas locales y cárguelos localmente ...

El rendimiento aumentará y el error se resolverá de manera efectiva.

jjyepez
fuente
4

arreglando esto en una aplicación iónica, simplemente agregue

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

a su archivo config.xml inmediatamente después de esta línea

<platform name="android">
Adeojo Emmanuel IMM
fuente
3

Revisa tu index.htmlarchivo. Si usa recursos externos, que no están disponibles cuando ejecuta la aplicación, puede obtener este error.

En mi caso, olvidé eliminar el enlace en la secuencia de comandos del depurador (weinre).

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

Entonces, la aplicación funcionó en el emulador porque http://192.168.0.102:8080/estaba en mi host local y estaba disponible para el emulador.

Pero cuando configuré la aplicación en el teléfono móvil tuve el mismo error, porque 192.168.0.102 no estaba disponible desde la red móvil.

Alexey Muravyov
fuente
1

En mi caso, estoy usando iónico y simplemente cerré el cuadro de diálogo que fue a las aplicaciones en el emulador y ejecuté mi aplicación desde allí. Esto funcionó. Tengo la idea de eso desde aquí, ya que era solo un problema de tiempo de espera.

FernandoZ
fuente
1

Si estás usando Visual Studio. Después de cambiar config.xml a veces necesita esto

solución de compilación limpia reconstruya su aplicación

Me esta funcionando.

caglabarán
fuente
1

Para mi caso, el problema se debió a la pérdida de la conexión a Internet en mi WiFi.

Chong Lip Phang
fuente
1

Estaba enfrentando el mismo problema. Noté que en mi índice tenía la función "en el dispositivo listo" y la función "document.ready", por lo que eliminar uno de ellos solucionó mi problema :)

Un pájaro
fuente
-8

Otra razón podría producirse este error: no hay index.htmlen .../YourApp/www/!

Acabo de seguir la guía iónica , y uno de los pasos es:

$ rm www/index.html

En iOS, esto no es un problema, ya que durante la compilación, el compilador toma algo de HTML predeterminado. Sin embargo, al compilar para Android, NO index.htmlse utiliza ningún ejemplo . Me llevó algún tiempo averiguarlo ("¿POR QUÉ funciona en iOS, pero no en Android ...?)

Solución fácil: cree un index.html, guárdelo .../YourApp/www, reconstruya ... ¡y listo!

Puñal
fuente