如何使用proguard对Android堆栈跟踪进行去混淆?

时间:2014-06-05 22:02:08

标签: android proguard

我已经下载了回溯jar并尝试运行它,因为我的映射文件out.map和来自Crashlytics的混淆堆栈跟踪crashtrace.txt

java -jar ~/Downloads/proguard-retrace-4.11.jar -verbose out.map crashtrace.txt

我收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: proguard/obfuscate/MappingProcessor
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Caused by: java.lang.ClassNotFoundException: proguard.obfuscate.MappingProcessor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 12 more

3 个答案:

答案 0 :(得分:1)

我遇到了与您完全相同的错误,但我的解决方案有所不同 - 我让Android SDK版本正常运行。

请注意,必须将retrace.jar和proguard.jar提取到同一目录中才能工作。

首先,我只是从android SDK中复制了retrace.jar,然后崩溃了上面的错误。当我将proguard.jar复制到同一目录时,它有效!

答案 1 :(得分:1)

解决方案:确保ret​​race.jar和proguard.jar都位于同一目录中。

这里的文档:

http://proguard.sourceforge.net/manual/retrace/usage.html

说这样做:

java -jar retrace.jar [options...] mapping_file [stacktrace_file]

重要细节遗漏:确保ret​​race.jar和proguard.jar都位于同一目录中。

否则,您将收到奇怪的JNI错误,如下所示:

Error: A JNI error has occurred, please check your installation and try again

答案 2 :(得分:0)

通过从sourceforge下载ProGuard发行版并使用该版本的回溯来解决。

java -jar ~/Downloads/proguard4.11/lib/retrace.jar -verbose out.map crashtrace.txt