Google Play控制台崩溃报告 - 多个OR

时间:2018-02-14 16:58:30

标签: android google-play-console bug-reporting

为什么我的制作应用程序崩溃报告的Google Play控制台(位于“Android Vitals”/“ANR和Crashes”中,然后选择任何崩溃以查看堆栈跟踪)包含大量 ORs 在堆栈跟踪?

这是什么意思?这12种方法中哪一种真的导致了崩溃?报告为何如此不清楚?

有没有办法获得确切的方法名称,理想情况下是报告中的行号? (我在“反混淆文件”下添加了映射文件。)

enter image description here

2 个答案:

答案 0 :(得分:2)

原因是你正在使用Proguard来缩小和混淆你的代码(到目前为止这么好),并且Proguard尽可能多地重用相同的方法名称(即只要方法的签名不同)尽量减少必须使用的字母数量。因此,缩小的代码很可能包含十几个名为" a"的方法。在每个类中,stacktrace只给你方法名称,而不是它的签名,所以很遗憾不可能知道十几个中的哪一个" a"正在调用方法,因此反混淆工具为您提供了所有可能性。

您可以自定义Proguard配置以避免这么多冲突,从而使您更容易调试,但这将以您的应用程序的大小为代价。

编辑:使用-useuniqueclassmembernames标志来避免这些OR。您可以查看ProGuard manual了解详情。

答案 1 :(得分:0)

前段时间我有同样的问题:

Strange stacktrace reported by Google Play Console

在我的情况下,我可以注意到,每个组中只有一个功能可能是正确的,因为其他功能在"上面没有被调用"功能。

我认为这是一种防逆向工程的保护方法。