quitar - ¿Cómo obtener registros de bloqueo de Android?
olvide mi patron de desbloqueo (14)
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
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ó?
Creé esta biblioteca para resolver todos tus problemas. Crash Reporter es una herramienta útil para capturar todos sus bloqueos 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 bloqueos 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)
Esto es de http://www.herongyang.com/Android/Debug-adb-logcat-Command-Debugging.html
Puedes usar adb:
adb logcat AndroidRuntime:E *:S
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<arr.length; i++) {
report += " "+arr[i].toString()+"/n";
}
report += "-------------------------------/n/n";
// If the exception was thrown in a background thread inside
// AsyncTask, then the actual exception can be found with getCause
report += "--------- Cause ---------/n/n";
Throwable cause = e.getCause();
if(cause != null) {
report += cause.toString() + "/n/n";
arr = cause.getStackTrace();
for (int i=0; i<arr.length; i++) {
report += " "+arr[i].toString()+"/n";
}
}
report += "-------------------------------/n/n";
try {
FileOutputStream trace = app.openFileOutput("stack.trace",
Context.MODE_PRIVATE);
trace.write(report.getBytes());
trace.close();
} catch(IOException ioe) {
// ...
}
defaultUEH.uncaughtException(t, e);
}
}
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 pila, 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 [email protected]: " + "/n" + trace + "/n";
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
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 declaración de la clase de actividad del lanzador
@ReportsCrashes(formKey = "", mailTo = "[email protected];[email protected]", mode = ReportingInteractionMode.SILENT)
Pruebe la aplicación de registro de Carsh desde Android.
utiliza el link para descargar la aplicación.
Puede intentarlo desde la consola:
adb logcat -b crash
Puede usar ACRA a partir de this . 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.
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 applause.com
Si está buscando una herramienta básica de informe de crashlytics , pruebe crashlytics .
Si desea una herramienta de informes más avanzada, Checkout Gryphonet . Registra todos los bloqueos ocurridos junto con la línea exacta de código que causó el bloqueo junto con marcadores automáticos que muestran los pasos que dio el usuario antes del bloqueo y más.
¡Buena suerte!
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 bloqueo 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.
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.
También puede usar el crashcatcher biblioteca
Usa acra crash reporter para la aplicación de Android .. this
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 bloqueo, 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?