¿Cómo puedo obtener datos de fallas (trazas de pila al menos) de mi aplicación de Android? Al menos cuando trabajo en mi propio dispositivo siendo recuperado por cable, pero idealmente desde cualquier instancia de mi aplicación que se ejecute en la naturaleza para que pueda mejorarla y hacerla más sólida.
android
crash
stack-trace
J. Pablo Fernández
fuente
fuente
Respuestas:
Puede probar la biblioteca ACRA (Application Crash Report para Android) :
Es fácil de instalar en su aplicación, altamente configurable y no requiere que aloje un script de servidor en ningún lugar ... ¡los informes se envían a una hoja de cálculo de Google Doc!
fuente
Para aplicaciones de muestra y propósitos de depuración, utilizo una solución simple que me permite escribir el stacktrace en la tarjeta sd del dispositivo y / o subirlo a un servidor. Esta solución se ha inspirado en Project android-remote-stacktrace (específicamente, las partes de guardar en el dispositivo y cargar en el servidor) y creo que resuelve el problema mencionado por Soonil. No es óptimo, pero funciona y puede mejorarlo si desea usarlo en una aplicación de producción. Si decide cargar los stacktraces en el servidor, puede usar un script php (
index.php
) para verlos. Si está interesado, puede encontrar todas las fuentes a continuación: una clase java para su aplicación y dos scripts php opcionales para el servidor que aloja los stacktraces cargados.En un contexto (por ejemplo, la actividad principal), llame
CustomExceptionHandler
upload.php
index.php
fuente
HttpPost httpPost = new HttpPost(url);
debe estar en una tarea asincrónica (o controlador ... un hilo separado) ahora si está apuntando a Honeycomb o más tardeTambién puedes probar
[BugSense]Motivo: redireccionamiento de spam a otra url . BugSense recopila y analiza todos los informes de fallas y le brinda informes significativos y visuales. Es gratis y es solo una línea de código para integrarse.Descargo de responsabilidad: soy cofundador
fuente
En Android 2.2 ahora es posible obtener automáticamente informes de bloqueo de aplicaciones de Android Market:
http://developer.android.com/sdk/android-2.2-highlights.html
fuente
Es posible manejar estas excepciones con
Thread.setDefaultUncaughtExceptionHandler()
, sin embargo, esto parece alterar el método de manejo de excepciones de Android. Intenté usar un controlador de esta naturaleza:Sin embargo, incluso al volver a lanzar las excepciones, no pude obtener el comportamiento deseado, es decir, registrar la excepción al tiempo que permitía que Android cerrara el componente que había sucedido, así que me di por vencido después de un tiempo.
fuente
Constants.TAG
parte del marco de Android? Primera vez que lo veo. Parece que no puedo encontrarlo.Veo que la pregunta es demasiado antigua y espero que mi respuesta sea útil para otros que tengan el mismo problema ...
Prueba Crashlytics . Le dará una visión profunda de todos los bloqueos en todos los dispositivos que tienen su aplicación y le enviará una notificación por correo electrónico ... Y la mejor parte es que es completamente gratis.
fuente
Ok, bueno, miré las muestras proporcionadas por rrainn y Soonil, y encontré una solución que no estropea el manejo de errores.
Modifiqué el CustomExceptionHandler para que almacene el UncaughtExceptionHandler original del Hilo al que asociamos el nuevo. Al final del nuevo "uncaughtException" - Método, simplemente llamo a la función anterior usando el UncaughtExceptionHandler almacenado.
En la clase DefaultExceptionHandler necesitas algo. Me gusta esto:
Con esa modificación en el código en http://code.google.com/p/android-remote-stacktrace , tiene una buena base de trabajo para iniciar sesión en el campo en su servidor web o tarjeta SD.
fuente
Google Play Developers Console realmente te ofrece los rastros de Stack de esas aplicaciones que se han bloqueado y han enviado los informes, también tiene muy buenos gráficos para ayudarte a ver la información, mira el siguiente ejemplo:
fuente
He estado usando Crittercism para mis aplicaciones de Android e iOS; escuché sobre ellas en techcrunch. Muy feliz con ellos hasta ahora!
fuente
Hice mi propia versión aquí: http://androidblogger.blogspot.com/2009/12/how-to-improve-your-application-crash.html
Básicamente es lo mismo, pero estoy usando un correo electrónico en lugar de una conexión http para enviar el informe y, lo que es más importante, agregué información a mi informe, como la versión de la aplicación, la versión del sistema operativo, el modelo del teléfono o la memoria disponible. .
fuente
use esto para capturar los detalles de la excepción:
almacenar esto en la base de datos y mantener el registro.
fuente
También puede usar un servicio completo (simple) en lugar de solo una biblioteca. Nuestra compañía acaba de lanzar un servicio solo para eso: http://apphance.com .
Tiene una biblioteca .jar simple (para Android) que agrega e integra en 5 minutos y luego la biblioteca recopila no solo información sobre fallas, sino también registros de la aplicación en ejecución, así como permite a sus evaluadores informar problemas directamente desde el dispositivo, incluido el contexto completo (rotación del dispositivo, ya sea que esté conectado a un wifi o no y más). Puede mirar los registros utilizando un panel web muy agradable y útil, donde puede realizar un seguimiento de las sesiones con su aplicación, bloqueos, registros, estadísticas y más. El servicio está en fase de prueba beta cerrada ahora, pero puede solicitar acceso y se lo daremos muy rápidamente.
Descargo de responsabilidad: soy CTO de Polidea y cocreador del servicio.
fuente
Agradezco los recursos presentes en
Stackoverflow
ayudarme a encontrar esta respuesta.Puede encontrar sus informes de fallas de Android de forma remota directamente en su correo electrónico . recuerda que debes poner tu correo electrónico dentro de la clase CustomExceptionHandler .
Pasos requeridos:
Primero) en onCreate of your activity use esta sección de su código.
2º) use esta versión anulada de la clase CustomExceptionHandler de (rrainn), de acuerdo con mi phpscript.
fuente
Hoy en día, los informes de Firebase Crash son muy populares y fáciles de usar. Consulte el siguiente enlace para obtener más información: Informes de bloqueo de Firebase
Espero que te ayude.
fuente
Esto es muy bruto, pero es posible ejecutar logcat en cualquier lugar, por lo que se debe agregar un truco rápido y sucio a cualquier bloque de captura
getRuntime().exec("logcat >> /sdcard/logcat.log");
fuente
Existe una herramienta llamada fabric, esta es una herramienta analítica de fallas, que le permitirá obtener informes de fallas, cuando la aplicación se implemente en vivo y durante el desarrollo. Agregar esta herramienta a su aplicación también fue simple. Cuando su aplicación falla, el informe del bloqueo se puede ver desde su tablero de fabric.io. Este informe se capturó automáticamente. No le pedirá permiso al usuario. Si desea enviar el informe de error / bloqueo. Y esto es completamente gratis ... https://get.fabric.io/
fuente
Google Firebase es la última forma de Google (2016) de proporcionarle datos de fallas / errores en su teléfono. Inclúyalo en su archivo build.gradle:
Los bloqueos fatales se registran automáticamente sin requerir la intervención del usuario y también puede registrar bloqueos no fatales u otros eventos como este:
fuente
Existe esta biblioteca de Android llamada Sherlock . Le proporciona el informe completo del bloqueo junto con la información del dispositivo y la aplicación. Cada vez que ocurre un bloqueo, muestra una notificación en la barra de notificaciones y al hacer clic en la notificación, abre los detalles del bloqueo. También puede compartir detalles del bloqueo con otras personas por correo electrónico u otras opciones para compartir.
Instalación
Manifestación
fuente
Si bien muchas de las respuestas en esta página son útiles, es fácil que se desactualicen. El sitio web de AppBrain agrega estadísticas que le permiten encontrar la solución de informes de fallas más popular que es actual:
Bibliotecas de informes de fallos de Android
Puede ver que al momento de publicar esta imagen, Crashlytics se usa en el 5.24% de las aplicaciones y el 12.38% de las instalaciones.
fuente
Utilizamos nuestro sistema interno dentro de la empresa y nos sirve muy bien. Es una biblioteca de Android que envía informes de fallas al servidor y al servidor que recibe informes y realiza algunos análisis. El servidor agrupa las excepciones por nombre de excepción, stacktrace, mensaje. Ayuda a identificar los problemas más críticos que deben corregirse. Nuestro servicio está en versión beta pública ahora para que todos puedan probarlo. Puede crear una cuenta en http://watchcat.co o simplemente puede ver cómo funciona usando el acceso de demostración http://watchcat.co/reports/index.php?demo .
fuente
Si quiere respuestas de inmediato, puede usar logcat
$adb shell logcat -f /sdcard/logoutput.txt *:E
Si hay demasiada basura en su registro en este momento, intente borrarlo primero.
$adb shell logcat -c
Luego intente ejecutar su aplicación y luego logcat nuevamente.
fuente
Encontré una gran aplicación web más para rastrear los informes de errores.
https://mint.splunk.com/
Pequeño número de pasos para configurar.
Eso es. Inicie sesión y vaya al panel de la aplicación, obtendrá todos los informes de errores.
Espero que ayude a alguien.
fuente
Para un servicio alternativo de informe de fallas / seguimiento de excepciones, consulte fallas Raygun.io : tiene una buena lógica para manejar los bloqueos de Android, incluida una experiencia de usuario decente al conectarlo a su aplicación (dos líneas de código en su Actividad principal y algunas líneas de XML pegadas en AndroidManifest).
Cuando su aplicación se bloquea, automáticamente capturará el seguimiento de la pila, los datos del entorno del hardware / software, la información de seguimiento del usuario, cualquier información personalizada que especifique, etc. La publicará en la API de forma asincrónica para que no se bloquee el hilo de la interfaz de usuario y la almacene en caché al disco si no hay red disponible.
Descargo de responsabilidad: construí el proveedor de Android :)
fuente
Recién comencé a usar ACRA https://github.com/ACRA/acra usando Google Forms como back-end y es muy fácil de configurar y usar, es el valor predeterminado.
PERO el envío de informes a los formularios de Google quedará en desuso (luego se eliminará): https://plus.google.com/118444843928759726538/posts/GTTgsrEQdN6 https://github.com/ACRA/acra/wiki/Notice-on-Google -Formulario-Hoja de cálculo-uso
De todos modos, es posible definir su propio remitente https://github.com/ACRA/acra/wiki/AdvancedUsage#wiki-Implementing_your_own_sender , puede intentar enviar un correo electrónico al remitente, por ejemplo.
Con un mínimo esfuerzo es posible enviar informes a bugsense: http://www.bugsense.com/docs/android#acra
Nota : la cuenta gratuita de bugsense está limitada a 500 informes / mes
fuente
Tarde a la fiesta, apoyo y creo que ACRA es la mejor opción entre todas. Es fácil de configurar y configurar. He creado una guía detallada con entradas de todas partes para buscar el informe de falla usando ACRA y enviarlo por correo a mi dirección de correo electrónico usando MandrillAp.
Enlace a la publicación: https://androidician.wordpress.com/2015/03/29/sending-crash-reports-with-acra-over-email-using-mandrill/
Enlace al proyecto de muestra en github: https://github.com/ayushhgoyal/AcraSample
fuente
Soy uno de los fundadores de Bugsnag, que diseñamos exactamente para este propósito. Bugsnag captura automáticamente las excepciones no controladas en las aplicaciones de Android y las envía a nuestro panel de control, donde puede priorizar las soluciones y sumergirse en la información de diagnóstico.
Estas son algunas cosas importantes a tener en cuenta al seleccionar o crear un sistema de informe de fallos, junto con algunos fragmentos de código:
Si desea ver algunas de las mejores prácticas sobre el manejo / informe de fallas en Android, puede consultar el código fuente completo de la biblioteca de informes de fallas de Bugsnag que es de código abierto, ¡no dude en separar esto y usarlo en sus propias aplicaciones!
fuente
Si otras personas descargan su aplicación y se bloquea en dispositivos remotos, es posible que desee buscar en una biblioteca de informes de errores de Android (mencionada en esta publicación SO ). Si solo está en su propio dispositivo local, puede usar LogCat. Incluso si el dispositivo no estaba conectado a una máquina host cuando se produjo el bloqueo, al conectar el dispositivo y al emitir un comando adb logcat se descargará todo el historial de logcat (al menos en la medida en que está almacenado en el búfer, que suele ser una gran cantidad de datos de registro) , simplemente no es infinito). ¿Alguna de esas opciones responde a su pregunta? Si no, ¿puedes intentar aclarar un poco más lo que estás buscando?
fuente
Flurry analytics le brinda información sobre fallas, modelo de hardware, versión de Android y estadísticas de uso de aplicaciones en vivo. En el nuevo SDK, parecen proporcionar información de bloqueo más detallada http://www.flurry.com/flurry-crash-analytics.html .
fuente
Google cambió la cantidad de informes de fallos que realmente recibes. Anteriormente solo recibías informes de errores informados manualmente.
Desde la última conferencia de desarrolladores y la presentación de Android Vitals , también recibe informes de fallas de los usuarios que han permitido compartir datos de diagnóstico.
Ver fallas y errores de aplicación que no responde (ANR)
fuente
Puedes hacer esto directamente en Android Studio. Simplemente conecte su teléfono, ejecute la aplicación, deje que se bloquee y podrá ver el seguimiento de la pila directamente en Android Studio.
fuente