proguard 堆栈跟踪行号丢失

proguard stack trace line numbers missing

我在从我的 Proguarded 应用程序恢复堆栈跟踪时遇到问题,非常感谢您的帮助。

尽管我明确要求保留 SourceFile 和 LineNumberTable 等属性,但实际上并没有为我的应用程序保留它们。

我试过禁用缩小、优化和除混淆本身之外的所有功能,但似乎没有任何效果。我已经查找了其他问题,但每个人的问题似乎都可以通过保留 SourceFile 和 LineNumberTable 属性来解决,但这对我不起作用。

我使用的是 Proguard 版本 4.6,jdk 1.6。通过 ant 脚本使用 javac 创建的 Jar 文件。

Proguard 配置:

-libraryjars '...'  #library jars here, omitted
-injars 'filename.jar'
-outjars 'export/filename.jar'

#-useuniqueclassmembernames
-dontusemixedcaseclassnames
-dontshrink
-dontskipnonpubliclibraryclassmembers
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
-keepparameternames
-printmapping 'export/mapping.map'
-dontoptimize
-dontnote "!DuplicateClassPrinter*"
-keep class org.** { *; }
-dontwarn org.**

-keep class myprogram.engine.scripting.functions.** {
    <methods>;
}

-keep class scriptfacade.** {
    <fields>;
    <methods>;
}

-keep,allowshrinking class myprogram.engine.scripting.functions.* {
    <methods>;
}

#...default keep classes etc below (omitted) 

非常感谢,

柴堆

实际上问题不在于 proguard,而是默认情况下 ant 不保留行号。参见 this link