当proguard混淆时,Stacktrace缺少方法

时间:2014-12-16 18:28:39

标签: android proguard crashlytics

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

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

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

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

1 个答案:

答案 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/*