Pregunta Lamentablemente, MyApp se ha detenido. ¿Como puedo resolver esto?


Estoy desarrollando una aplicación, y cada vez que la ejecuto, recibo el mensaje:

Lamentablemente, MyApp se ha detenido.

¿Qué puedo hacer para resolver esto?


Acerca de esta pregunta, obviamente inspirada por ¿Qué es un seguimiento de pila y cómo puedo usarlo para depurar mis errores de aplicación?, hay muchas preguntas que indican que su aplicación se ha bloqueado, sin más detalles. Esta pregunta tiene como objetivo instruir a los programadores novatos de Android sobre cómo intentar solucionar ellos mismos sus problemas o hacer las preguntas correctas.


618
2018-04-28 23:55


origen


Respuestas:


Esta respuesta describe el proceso de recuperación del seguimiento de la pila. ¿Ya tienes el rastro de la pila? Lea sobre rastros de pila en "¿Qué es un seguimiento de pila y cómo puedo usarlo para depurar mis errores de aplicación?"

El problema

Su aplicación se retiró porque no se detectó RuntimeException fue lanzado.
El más común de estos es el NullPointerException.

¿Cómo resolverlo?

Cada vez que se bloquea una aplicación de Android (o cualquier aplicación de Java), Stack trace está escrito en la consola (en este caso, logcat). Esta traza de pila contiene información vital para resolver su problema.

Estudio Android

Finding the stack trace in Android Studio

En la barra inferior de la ventana, haga clic en Logcat botón. Alternativamente, puede presionar alt+6. Asegúrate de que tu emulador o dispositivo esté seleccionado en Devices panel. A continuación, intente encontrar el trazado de la pila, que se muestra en rojo. Es posible que haya un montón de cosas registradas en Logcat, por lo que es posible que deba desplazarse un poco. Una manera fácil de encontrar el seguimiento de pila es borrar el logcat (utilizando la papelera de reciclaje a la derecha) y dejar que la aplicación vuelva a fallar.

He encontrado el rastro de la pila, ¿y ahora qué?

¡Hurra! Estás a medio camino para resolver tu problema.
Solo tiene que averiguar qué hizo exactamente que se bloquee la aplicación analizando el seguimiento de la pila.

Lea sobre rastros de pila en "¿Qué es un seguimiento de pila y cómo puedo usarlo para depurar mis errores de aplicación?"

¡Todavía no puedo resolver mi problema!

Si has encontrado tu Exception y la línea donde ocurrió, y todavía no puede encontrar la manera de solucionarlo, no dude en hacer una pregunta en StackOverflow.

Intenta ser lo más conciso posible: publica el seguimiento de la pila y pertinente código (por ejemplo, unas pocas líneas hasta la línea que arrojó el Exception)


578
2018-03-22 23:06



Puedes usar La herramienta ADB de Google Llegar Logcat file para analizar el problema

adb logcat > logcat.txt

abierto logcat.txt archivo y busque el nombre de su aplicación. Debería haber información sobre por qué falló, el número de línea, el nombre de la clase, etc.


76
2018-03-18 08:01



Primero, comprueba en qué punto tu aplicación se ha bloqueado (Unfortunately, MyApp has stopped.) Para esto puedes usar Log.e("TAG","Message");Con esta línea, puede ver que su aplicación inicia sesión en logcat.

Después de eso, encontrará qué punto ha detenido su aplicación, es muy fácil de resolver a su lado.


22
2018-06-11 10:58



Solo revisa el error en log cat.

Obtienes la opción de registro de cat en eclipse:

ventana-> mostrar vista-> otros-> Android-> Logcat

Log cat contiene error.

De otro modo, también puede verificar el error ejecutando una aplicación en modo de depuración. Primero establece un punto de ruptura después de eso haciendo:

haga clic derecho en proyecto-> depurar como-> aplicación de Android


17
2017-11-06 09:23



Nota: Esta respuesta usa Android Studio 2.2.2


15
2017-07-04 04:38



Esta ventana emergente solo se muestra cuando se produce una excepción fatal en el código que detiene la ejecución de la aplicación. Podría ser una excepción NullPointerException, OutOfMemoryException, etc.

La mejor forma de verificarlo es a través de Logcat si todavía está desarrollando la aplicación en el estudio de Android, que es una forma rápida de leer el seguimiento de pila y comprobar la causa de la aplicación.

Si su aplicación ya está en vivo, entonces no puede usar Logcat. Entonces, para eso puede implementar Crashlytics para proporcionarle informes de errores de cualquier excepción que ocurra.


11
2018-06-29 11:48



Revisar su Logcat mensaje y ver su Manifest archivo. Debería haber algo que falta como definir el Activity,Permiso de usuario`, etc.


9
2017-11-03 05:47



Puede usar cualquiera de estas herramientas:

  1. adb logcat

  2. adb logcat> logs.txt (puede usar editores para abrir y buscar errores).

  3. eclipse logcat (Si no está visible en eclipse, vaya a Windows-> Mostrar vista-> Otros-> Android-> LogCat)

  4. Android Debug Monitor o Android Device Monitor (comando de tipo monitor o abierto a través de UI)

enter image description here

  1. Estudio Android

Sugiero usar Monitor de depuración de Android, es bueno. Porque el eclipse se bloquea cuando hay demasiados registros allí, y a través del filtro de adb logcat y todos son difíciles.


8
2017-07-13 08:37



Tienes que verificar el Stack trace

¿Como hacer eso?

en su IDE Compruebe las ventanas de LOGCAT

Si no puede ver las ventanas del logcat, vaya a esta ruta y ábrala

window->show view->others->Android->Logcat

Si está utilizando Google-Api, vaya a esta ruta

adb logcat> logcat.txt


6
2017-07-14 03:21



Permítanme compartir un análisis básico de Logcat para cuando se encuentre con un cierre forzado (cuando la aplicación deja de funcionar).

DOCS

La herramienta básica de Android para recopilar / analizar registros es el logcat.

AQUÍ es la página de Android sobre logcat

Si usa Android Studio, también puede verificar esto ENLAZAR.

Capturando

Básicamente, puedes capturar MANUALMENTE Logcat con el siguiente comando (o simplemente verificar la ventana de AndroidMonitor en AndroidStudio):

adb logcat

Hay muchos parámetros que puede agregar al comando que le ayudan a filtrar y mostrar el mensaje que desea ... Esto es personal ... Siempre utilizo el siguiente comando para obtener la marca de tiempo del mensaje:

adb logcat -v time

Puede redirigir el resultado a un archivo y analizarlo en un Editor de texto.

Analizando

Si su aplicación se cuelga, obtendrá algo como:

07-09 08:29:13.474 21144-21144/com.example.khan.abc D/AndroidRuntime: Shutting down VM
07-09 08:29:13.475 21144-21144/com.example.khan.abc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.khan.abc, PID: 21144
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference
     at com.example.khan.abc.AudioFragment$1.onClick(AudioFragment.java:125)
     at android.view.View.performClick(View.java:4848)
     at android.view.View$PerformClick.run(View.java:20262)
     at android.os.Handler.handleCallback(Handler.java:815)
     at android.os.Handler.dispatchMessage(Handler.java:104)
     at android.os.Looper.loop(Looper.java:194)
     at android.app.ActivityThread.main(ActivityThread.java:5631)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
07-09 08:29:15.195 21144-21144/com.example.khan.abc I/Process: Sending signal. PID: 21144 SIG: 9

Esta parte del registro muestra mucha información:

  • Cuando el problema sucedió: 07-09 08:29:13.475

Es importante verificar cuándo ocurrió el problema ... Es posible que encuentre varios errores en un registro ... debe asegurarse de que está verificando los mensajes adecuados :)

  • Qué aplicación se colgó: com.example.khan.abc

De esta forma, usted sabe qué aplicación se colgó (para asegurarse de que está revisando los registros de su mensaje)

  • Que ERROR: java.lang.NullPointerException

Un error de excepción de puntero NULL

  • Información detallada sobre el error: Attempt to invoke virtual method 'void android.support.v4.app.FragmentActivity.onBackPressed()' on a null object reference

Intentó llamar al método onBackPressed() a partir de una FragmentActivity objeto. Sin embargo, ese objeto era nullcuando lo hiciste

  • Stack Trace: Stack Trace le muestra el orden de invocación del método ... A veces, el error ocurre en el método de llamada (y no en el método llamado).

    en com.example.khan.abc.AudioFragment $ 1.onClick (AudioFragment.java:125)

Se produjo un error en el archivo com.example.khan.abc.AudioFragment.java, dentro onClick() método en línea: 125 (stacktrace muestra la línea que ocurrió el error)

Fue llamado por:

at android.view.View.performClick(View.java:4848)

Que fue llamado por:

at android.view.View$PerformClick.run(View.java:20262)

que fue llamado por:

at android.os.Handler.handleCallback(Handler.java:815)

etc ....

Visión de conjunto

Esto fue solo una descripción general ... No todos los registros son simples, etc ... Es solo para compartir la idea y proporcionarle una información de nivel de entrada ...

Espero poder ayudarte de alguna manera ... Saludos


5
2018-04-03 09:37