安卓 ProGuard 返回行号

2022-09-01 03:01:03

有没有办法让 ProGuard 返回发生崩溃的行号?我可以用来得到这个方法,但通常对于这样的事情,有太多的可能性,在一大段代码中,很难确定根本原因,因为你必须检查每个对象和它的生命周期,以确保没有错。如果 ProGuard 可以为我缩小到行号,那将非常有帮助。retraceNullPointerException


答案 1

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

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

https://www.guardsquare.com/en/products/proguard/manual/usage


答案 2

当您创建新的 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

因此,如果您使用它,则可能无法看到崩溃堆栈跟踪的良好信息。


推荐