Proguard回扫不会将堆栈跟踪映射到实际源

时间:2011-06-07 11:19:00

标签: android proguard

我一直在使用proguard工具中内置的eclipse来隐藏代码,这很好用。但是,当我尝试回溯混淆代码的堆栈跟踪时,回扫不会输出未混淆的堆栈跟踪。

我仔细检查了mapping.txt以确定我使用的是正确的。

这是我的堆栈跟踪

ERROR/AndroidRuntime(19398): 
FATAL EXCEPTION: Thread-35
ERROR/AndroidRuntime(19398): java.lang.NullPointerException
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.throwIfRecycled(Canvas.java:954)
ERROR/AndroidRuntime(19398):     at android.graphics.Canvas.drawBitmap(Canvas.java:980)
ERROR/AndroidRuntime(19398):     at com.excelectronic.b.aa.a(ProGuard:535)
ERROR/AndroidRuntime(19398):     at com.excelectronic.g.f.a(ProGuard:220)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.a(ProGuard:198)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.GameView.onDraw(ProGuard:98)
ERROR/AndroidRuntime(19398):     at com.excelectronic.game.ac.run(ProGuard:121)

并使用命令

retrace.bat -verbose mapping.txt obfuscated_trace.txt

2 个答案:

答案 0 :(得分:15)

默认情况下,ProGuard的ReTrace工具要求堆栈跟踪格式正确,这是java打印出来的方式。这意味着它期望在适当的位置换行,并且没有像“ERROR / AndroidRuntime(19398)”这样的前缀。

或者,您可以修改ReTrace用于解析堆栈跟踪的正则表达式。

答案 1 :(得分:1)

在使用ReTrace之前,使用traceview提取原始Java堆栈跟踪。