【发布时间】:2015-11-17 21:02:18
【问题描述】:
我在我的应用程序中使用 ProGuard,问题是当用户向我的控制台报告一些问题并且由于“未知来源”而我无法准确解码时。
这是堆栈跟踪的示例:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.my.package.j.a(Unknown Source)
at com.a.a.c.c.j(Unknown Source)
at com.a.a.c.c.b(Unknown Source)
at com.a.a.c.e.run(Unknown Source)
at java.lang.Thread.run(Thread.java:856)
那我就用这段代码来解码:
./retrace.sh -verbose mapping.txt stacktrace.txt > out.txt
这是输出:
java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
at com.my.package.MyFragment$10.void output(int,java.lang.String)(Unknown Source)
at com.stericson.RootTools.execution.Shell.void readOutput()(Unknown Source)
at com.stericson.RootTools.execution.Shell.void closeCustomShell()(Unknown Source)
com.stericson.RootTools.execution.Shell startShell(int)
void access$200(com.stericson.RootTools.execution.Shell)
at com.stericson.RootTools.execution.Shell$2.void run()(Unknown Source)
at java.lang.Thread.run(Thread.java:856)
发生错误时只显示Fragment的名称,但我还需要确切的行和方法。
【问题讨论】:
-
您是否在混淆时保留行号,因为堆栈跟踪已经没有此信息? stackoverflow.com/questions/10158849/…
-
不,我不保留它。那么将这些行(在您发送的链接中)添加到 ProGuard 会将行号保留在堆栈跟踪中吗?
-
会的。当然,它也会稍微降低收缩率,因为这些信息不会被混淆/从二进制文件中删除。
标签: android proguard decode stack-trace android-proguard