我一直在使用内置的proguard工具中的eclipse来混淆代码,效果很好。但是,当我尝试回溯混淆代码的堆栈跟踪时,retrace不会输出未混淆的堆栈跟踪。
我已经仔细检查了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
最佳答案
默认情况下,ProGuard的ReTrace工具期望堆栈跟踪的格式正确,这是用Java打印出来的方式。这意味着它期望换行符在适当的位置,并且没有像“ERROR/AndroidRuntime(19398)”之类的前缀。
或者,您可以修改ReTrace用于解析堆栈跟踪的正则表达式。