Android Proguard回溯丢失的行号

Android Proguard回溯丢失的行号,android,proguard,Android,Proguard,我正在尝试从我的Android应用程序中删除堆栈跟踪。我在构建应用程序时使用了proguard,运行retrace似乎或多或少能起作用 不起作用的是解码行号。输出上没有显示行号,它为每个“at”列出了多个选项 这是我的proguard-project.txt文件: -keepattributes LineNumberTable -assumenosideeffects class android.util.Log { public static int v(...); publi

我正在尝试从我的Android应用程序中删除堆栈跟踪。我在构建应用程序时使用了proguard,运行retrace似乎或多或少能起作用

不起作用的是解码行号。输出上没有显示行号,它为每个“at”列出了多个选项

这是我的proguard-project.txt文件:

-keepattributes LineNumberTable
-assumenosideeffects class android.util.Log {
    public static int v(...);
    public static int d(...);
}
这是我的堆栈跟踪:

uncaught exception
java.lang.NullPointerException
at com.myapp.myapp.dbaccess.ag.a(Unknown Source)
at com.myuapp.myapp.dbaccess.x.a(Unknown Source)
at com.myapp.myapp.dbaccess.x.a(Unknown Source)
at com.myapp.myapp.main.ab.run(Unknown Source)
以下是输出:

uncaught exception
java.lang.NullPointerException
at com.myapp.myapp.dbaccess.ZNodeCache.com.myapp.myapp.dbaccess.ZNode getNodeFromCache(long)(Unknown Source)
                                             com.myapp.myapp.dbaccess.ZRoot getRootFromCache()
                                             com.myapp.myapp.dbaccess.ZNode getNodeFromDb(long,boolean)
                                             com.myapp.myapp.dbaccess.ZNode$Array getChildrenForExport(com.myapp.myapp.dbaccess.ZNode)
                                             ... many more ...
at com.myapp.myapp.dbaccess.XmlImport.com.myapp.myapp.dbaccess.XmlImport$Results importFile(java.lang.String)(Unknown Source)
                                            void _doImport(java.io.InputStream,com.myapp.myapp.dbaccess.XmlImport$Results)
                                            void importFile(java.io.InputStream)
                                            void importNode(org.xmlpull.v1.XmlPullParser,com.myapp.myapp.dbaccess.ZNode)
                                             ... many more ...
at com.myapp.myapp.dbaccess.XmlImport.com.myapp.myapp.dbaccess.XmlImport$Results importFile(java.lang.String)(Unknown Source)
                                            void _doImport(java.io.InputStream,com.myapp.myapp.dbaccess.XmlImport$Results)
                                            void importFile(java.io.InputStream)
                                            void importNode(org.xmlpull.v1.XmlPullParser,com.myapp.myapp.dbaccess.ZNode)
                                             ... many more ...
at com.myapp.myapp.main.MainActivity$3.void run()(Unknown Source)

我必须缺少另一个配置参数;有什么想法吗?

答案在Android文档中(信不信由你)。我想我第一次错过了。您需要指定源文件,如下所示:

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
renamsesourcefileattribute将使所有源文件的名称均为SourceFile(或您输入的任何名称)。“retrace”并不关心源文件名是什么,但是如果您忽略它,它会决定忽略行号


这在proguard-project.txt中,如果您使用的是Android Studio,您可以在“your project.app”中找到它。

您的回答让我找到了另一行-printmapping out.mapIn,您把这些行放在了哪个文件中?我在Android Studio中的
proguard rules.pro
文件中尝试过,但行号还没有出现。在proguard-project.txt中,这会使试图对代码进行反向工程的人更容易吗?@voxoid这里有同样的问题。那么有人对此有答案吗(4年后)?