为什么我的生产应用崩溃报告(位于“Android Vitals”/“ANR 和崩溃”中,然后选择任何崩溃以查看堆栈跟踪)的 Google Play 控制台包含大量 OR在堆栈跟踪中?
这是什么意思?这 12 种方法中哪一种实际上导致了崩溃?为什么报告如此不清楚?
有没有办法获得准确的方法名称,最好是报告中的行号? (我已在“反混淆文件”下添加了映射文件)。
最佳答案
原因是您使用 Proguard 来缩小和混淆代码(到目前为止一切顺利),并且 Proguard 尽可能多地重用相同的方法名称(即,只要方法的签名不同)尽量减少必须使用的字母数量。因此,缩小后的代码很可能在每个类中包含十几个名称为“a”的方法,而堆栈跟踪仅提供方法名称,而不是其签名,因此不幸的是不可能知道这十几个“a”方法中的哪一个正在被调用,因此反混淆工具为您提供了所有可能性。
您可以自定义 Proguard 配置以避免太多冲突,从而使您更轻松地进行调试,但这将以应用程序的大小为代价。
编辑:使用 -useuniqueclassmembernames
标志来避免这些 OR。您可以查看ProGuard manual了解更多详情。
关于android - Google Play 控制台崩溃报告 - 多个 OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48792480/