¿Cómo obtener registros de locking de Android?

Tengo una aplicación que no está en el mercado (firmada con un certificado de depuración), pero me gustaría obtener datos de registro de fallos cada vez que se bloquea mi aplicación. ¿Dónde puedo encontrar un registro de por qué mi aplicación se bloqueó?

Si su aplicación está siendo descargada por otras personas y se bloquea en dispositivos remotos, es posible que desee consultar una biblioteca de informes de errores de Android (a la que se hace referencia en esta publicación de SO ). Si solo está en su dispositivo local, puede usar LogCat. Incluso si el dispositivo no estaba conectado a una máquina host cuando se produjo el locking, la conexión del dispositivo y la emisión de un comando adb logcat descargará todo el historial de logcat (al menos en la medida en que está almacenado, lo que normalmente es un montón de datos de registro). , no es infinito). ¿Alguna de esas opciones responde tu pregunta? Si no, ¿puedes intentar aclarar un poco más lo que estás buscando?

La forma de hacerlo es implementar la interfaz Thread.UncaughtExceptionHandler y pasarla a Thread.setDefaultUncaughtExceptionHandler() al principio de onCreate() de su actividad. Aquí está la clase de implementación TopExceptionHandler .

 public class TopExceptionHandler implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler defaultUEH; private Activity app = null; public TopExceptionHandler(Activity app) { this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler(); this.app = app; } public void uncaughtException(Thread t, Throwable e) { StackTraceElement[] arr = e.getStackTrace(); String report = e.toString()+"\n\n"; report += "--------- Stack trace ---------\n\n"; for (int i=0; i 

Tenga en cuenta Permitimos que el marco de trabajo predeterminado de Android lo controle.

En la parte superior de su Actividad, registre una instancia de la clase superior de esta manera:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Thread.setDefaultUncaughtExceptionHandler(new TopExceptionHandler(this)); ... 

Este controlador guarda la traza en un archivo. Cuando ReaderScope reinicia la próxima vez, detecta el archivo y le indica al usuario si desea ReaderScope por correo electrónico al desarrollador.

Para enviar por correo electrónico el seguimiento de stack, ejecute el siguiente código para empaquetarlo en un correo electrónico.

 try { BufferedReader reader = new BufferedReader( new InputStreamReader(ReaderScopeActivity.this.openFileInput("stack.trace"))); while((line = reader.readLine()) != null) { trace += line+"\n"; } } catch(FileNotFoundException fnfe) { // ... } catch(IOException ioe) { // ... } Intent sendIntent = new Intent(Intent.ACTION_SEND); String subject = "Error report"; String body = "Mail this to appdeveloper@gmail.com: " + "\n" + trace + "\n"; sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"readerscope@altcanvas.com"}); sendIntent.putExtra(Intent.EXTRA_TEXT, body); sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject); sendIntent.setType("message/rfc822"); ReaderScopeActivity.this.startActivity(Intent.createChooser(sendIntent, "Title:")); ReaderScopeActivity.this.deleteFile("stack.trace"); 

O también puede usar el Sistema de Informes de Errores ACRA. Solo incluya ACRA.jar en las bibliotecas de proyectos y use el siguiente fragmento de código antes de la statement de la clase de actividad del lanzador

 @ReportsCrashes(formKey = "", mailTo = "abc@gmail.com;def@yahoo.com", mode = ReportingInteractionMode.SILENT) 

Esto es de http://www.herongyang.com/Android/Debug-adb-logcat-Command-Debugging.html

Puedes usar adb:

 adb logcat AndroidRuntime:E *:S 

Puede intentarlo desde la consola:

adb logcat -b crash

Puedes usar Apphance. Este es un servicio multiplataforma (ahora principalmente Android, iOS con otras plataformas en camino) que permite depurar remotamente cualquier dispositivo móvil (Android, iOS ahora, otros en desarrollo). Es mucho más que solo un registro de fallas, de hecho es mucho más: registro, informe de problemas por probadores, registros de fallas. Tarda unos 5 minutos en integrarse. Actualmente puede solicitar el acceso a la versión beta cerrada.

Descargo de responsabilidad: soy CTO de Polidea, una compañía detrás de Apphance y cocreadora de la misma.

Actualización: ¡Apphance ya no está cerrada beta! Actualización 2: Apphance está disponible como parte de la oferta http://applause.com

Si está utilizando Eclipse, asegúrese de usar depuración y no ejecutar. Asegúrese de que se encuentra en la perspectiva de depuración (arriba a la derecha) Es posible que deba presionar ‘Reanudar’ (F8) varias veces para que se imprima el registro. El registro de locking estará en la ventana de Logcat en la parte inferior; haga doble clic para pantalla completa y asegúrese de desplazarse hasta la parte inferior. Verá texto rojo para los errores, el rastro del choque será algo así como

 09-04 21:35:15.228: ERROR/AndroidRuntime(778): Uncaught handler: thread main exiting due to uncaught exception 09-04 21:35:15.397: ERROR/AndroidRuntime(778): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.dazlious.android.helloworld/com.dazlious.android.helloworld.main}: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2268) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.access$1800(ActivityThread.java:112) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.os.Handler.dispatchMessage(Handler.java:99) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.os.Looper.loop(Looper.java:123) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.main(ActivityThread.java:3948) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at java.lang.reflect.Method.invokeNative(Native Method) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at java.lang.reflect.Method.invoke(Method.java:521) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at dalvik.system.NativeStart.main(Native Method) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): Caused by: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.example.android.helloworld.main.onCreate(main.java:13) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231) 09-04 21:35:15.397: ERROR/AndroidRuntime(778): ... 11 more 

Las partes importantes para este son

 09-04 21:35:15.397: ERROR/AndroidRuntime(778): Caused by: java.lang.ArrayIndexOutOfBoundsException 09-04 21:35:15.397: ERROR/AndroidRuntime(778): at com.example.android.helloworld.main.onCreate(main.java:13) 

Dicen que fue una excepción de matriz fuera de límites en la línea 13 de main.java en el método onCrate.

Aquí hay otra solución para Crash Log.

Android Market tiene una herramienta llamada “Crash Collector”

revise el siguiente enlace para más información

http://kpbird.blogspot.com/2011/08/android-application-crash-logs.html

Puede usar ACRA a partir de esto . Incluyendo esta biblioteca a sus proyectos y configurándola, podría recibir (en su correo electrónico o gdocs) sus informes de fallos. Perdón por mi mal ingles.

Si está buscando una herramienta básica de informe de fallos , pruebe crashlytics .

Si desea una herramienta de informes más avanzada, Checkout Gryphonet . Registra todos los lockings ocurridos junto con la línea exacta de código que causó el locking junto con marcadores automáticos que muestran los pasos que dio el usuario antes del locking y más.

¡Buena suerte!

Usa acra crash reporter para la aplicación de Android .. Acra lib

También puede usar el atrapamoscas de la biblioteca

Si solo está buscando el registro de fallas mientras su teléfono está conectado a la computadora, use la vista DDMS en Eclipse y el informe está justo allí en LogCat dentro de DDMS cuando su aplicación se cuelga durante la depuración.

Creé esta biblioteca para resolver todos tus problemas. Crash Reporter es una herramienta útil para capturar todos sus lockings y registrarlos en el dispositivo localmente

Solo agrega esta dependencia y listo.

 compile 'com.balsikandar.android:crashreporter:1.0.1' 

Encuentre todos sus fallos en el dispositivo localmente y arránquelos a su conveniencia. Los lockings se guardan usando un formato de fecha y hora fácil de seguir. Además, también proporciona API para capturar excepciones registradas usando el método a continuación.

 CrashRepoter.logException(Exception e) 

Aquí hay una solución que puede ayudarlo a volcar todos los registros en un archivo de texto

 adb logcat -d > logs.txt 

Pruebe la aplicación de registro de Carsh desde Android.

utiliza el enlace para descargar la aplicación.