我注意到在我的Crashlytics / Fabric仪表板上,对于我的proguard混淆版本构建,我将缺少堆栈跟踪的第一个(也是最重要的)方法+行号。对于我的调试版本,我可以正确地看到这个方法。
具体来说,在我的onCreateView()
中,我调用了我的updateData()
方法(我的崩溃发生的地方)但是我的混淆构建updateData()
没有显示在堆栈跟踪中,只是onCreateView()
。未经模糊处理的构建显示了两种方法的正确堆栈跟踪。
我使用proguard-android-optimize.txt
,因为我需要从发布版本中删除日志。
如何正确显示正确的堆栈轨迹?
答案 0 :(得分:1)
堆栈跟踪不一致,因为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/*