Android ProGuard返回行号

时间:2012-04-15 01:24:18

标签: java android apk proguard

有没有办法让ProGuard返回发生崩溃的行号? 我可以使用retrace来获取方法,但是对于像NullPointerException这样的东西来说,有太多的可能性,并且在大量代码中很难确定根本原因,因为你必须检查每一个对象和它的生命周期,以确保没有错。如果ProGuard能够将此范围缩小到我的行号,那将非常有用。

2 个答案:

答案 0 :(得分:68)

将此行添加到proguard-project.txt文件中。

# will keep line numbers and file name obfuscation
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

http://proguard.sourceforge.net/index.html#manual/usage.html

答案 1 :(得分:0)

创建新的Android项目时,它会告诉您有关哪些行可能要取消注释的信息:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable

# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

因此,您应该考虑拥有这些:

-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile

但是,请注意,由于某些原因,Firebase Crashlytics团队告诉我此行可能会干扰他们的服务:

-renamesourcefileattribute SourceFile

因此,如果您使用崩溃堆栈跟踪,可能看不到很好的信息。