我正试图从我的
Android应用程序中去除堆栈跟踪.我在构建应用程序时使用了proguard,并且运行回溯似乎工作,或多或少.
什么是行不通的是解码行号.输出中没有显示行号,它列出了每个“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.ZNode) ... many more ... at com.myapp.myapp.main.MainActivity$3.void run()(Unknown Source)
我必须缺少另一个配置参数;有任何想法吗?
@H_404_18@解决方法
原来答案是在Android文档中(信不信由你).我猜我第一次错过了它.您需要指定源文件,如下所示:
-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable
renamsesourcefile属性将导致所有源文件的名称为SourceFile(或您放置的任何内容). “retrace”不关心源文件名是什么,但是如果你把它遗漏掉,它决定忽略行号.
这可以在proguard-project.txt中找到,如果您使用的是Android Studio,则可以在“您的项目”中找到.app.
@H_404_18@ @H_404_18@