Pregunta

Cuando llegué a algo como esto

ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677):     at com.companyname.a.a.a(Unknown Source)

¿Cómo puedo saber dónde está el problema y depurar este problema? Sólo tengo la salida de mapeo de ProGuard y no sé el número de línea. Gracias.

¿Fue útil?

Solución

Añadir las siguientes líneas a su configuración Proguard.

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable

Ahora sus seguimientos de pila incluirán números de línea, y con la función de retroceso que se incluye con Proguard (incluidas en el SDK de Android), que son capaces de depurar de manera normal.

Tenga en cuenta que incluso si usted no ha utilizado estas dos opciones de configuración, retrazo todavía puede dar salida a información útil siempre que tenga el archivo de asignaciones, aunque no totalmente sin ambigüedad.

Nota: el archivo con las asignaciones se produce por la opción de configuración Proguard:

 -printmapping outputfile.txt

En el archivo de hormigas se incluye con el SDK de Android, que se establece en mapping.txt.

Buena suerte.

Otros consejos

Para hacer uso de cualquier traza de la pila de su cuenta de Android Market, puede utilizar el archivo de mapa, producido con the-printmapping opción en la configuración ProGuard, con ReTrace (herramienta complementaria ProGuard) para decodificar el seguimiento de la pila. También puede decodificar a mano con el contenido del archivo de mapa, pero esto es tedioso.

En el ProGuard Manual bajo ejemplos, hay una sección sobre la producción de trazas de la pila ofuscado útiles, incluyendo cómo mantener los números de línea.

Desafortunadamente, si no configuró la ProGuard para mantener los números de línea, entonces sólo será capaz de identificar el método que produce la excepción.

Pega el seguimiento de la pila en stack_trace.txt

Ejecutar el siguiente comando: java-jar retrace.jar classes-processed.map stack_trace.txt

retrace.jar está en SDK \ tools \ Proguard \ lib \ retrace.jar classes-processed.map es el archivo de salida generada por el PROGuard cuando se hizo la ofuscación

Aquí hay un enlace a la documentación oficial en la herramienta de retroceso de Android SDK: https://developer.android.com/studio/build/shrink-code#decode-stack-trace

Este artículo es bueno también: https: // medio. com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379

Por todo lo que copiar y pegar bros:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top