堆栈跟踪在启用 proguard 模糊处理时缺少方法



我注意到在我的 Crashlytics/Fabric 仪表板上,对于我的 proguard 混淆发布版本,我将缺少堆栈跟踪的第一个(也是最重要的)方法 + 行号。对于我的调试版本,我将能够正确看到此方法。

所以具体地说,在我的onCreateView()中,我调用了我的updateData()方法(我的崩溃发生的地方),但在我混淆的构建中,updateData()没有显示在堆栈跟踪中,只显示在onCreateView()中。未混淆的构建显示了两种方法的正确堆栈跟踪。

我正在使用proguard-android-optimize.txt因为我需要从发布版本中删除日志。

如何正确显示正确的堆栈轨道?

堆栈跟踪不一致,因为proguard-android-optimize.txt配置应用除此处指定的优化(从 proguard-android-optimize.txt 开始)之外的所有优化:

-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*

因此,如何读取任何带有'!'标记的前缀都是排除的优化,但包括所有其他优化。解释如下: http://proguard.sourceforge.net/manual/optimizations.html

方法

从堆栈跟踪中消失的原因是默认优化之一是方法内联。因此,在我们的proguard-rules.txt文件中,我们只需添加此行以防止这种情况发生:

-optimizations !method/inlining/*

最新更新