有没有办法让 ProGuard 返回发生崩溃的行号?我可以使用retrace
该方法,但通常对于诸如NullPointerException
存在太多可能性并且在一大段代码中很难确定根本原因,因为您必须检查每个对象及其生命周期以确保没有错误的。如果 ProGuard 可以将其缩小到对我来说是一个行号,那将真的很有帮助。
问问题
7710 次
2 回答
73
将此行添加到您的 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
于 2012-04-15T02:32:20.033 回答
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
因此,如果您使用它,您可能看不到有关崩溃堆栈跟踪的良好信息。
于 2018-10-20T06:17:16.003 回答