我注意到在我的 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/*