当前位置: 首页 > 知识库问答 >
问题:

Google Play控制台崩溃报告-多个操作系统

花稳
2023-03-14

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

这是什么意思?这12种方法中的哪一种实际上导致了崩溃?为什么报告这么不清楚?

有没有办法获得准确的方法名称,最好是报告中的行号?(我在“DeobFousation文件”下添加了映射文件)。

共有2个答案

钱渊
2023-03-14

不久前我也有同样的问题:

谷歌Play控制台报告了奇怪的stacktrace。

在我的例子中,我可以注意到,每个组中只有一个函数可能是正确的,因为在“上面”函数中没有调用其他函数。

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

锺离边浩
2023-03-14

原因是您正在使用ProGuard来缩小和混淆您的代码(到目前为止还不错),ProGuard尽可能多地重复使用相同的方法名称(即,只要方法的签名不同),以尽量减少字母的数量它必须使用。所以缩小后的代码很可能在每个类中包含十几个名为“a”的方法,堆栈跟踪只给你方法名,而不是它的签名,所以不幸的是,不可能知道十几个“a”方法中的哪一个被调用,因此,去模糊工具给你所有的可能性。

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

编辑:使用-useunieclassmembername标志来避免这些ORs。您可以查看ProGuard手册了解更多详情。

 类似资料:
  • 我正在android应用程序中使用firebase。几天后,firebase突然停止向主firebase控制台报告崩溃。我得到以下错误每当任何崩溃发生在应用程序。 我的分级文件如下所示 我已经尝试更新api密钥,但我没有得到任何更新它。提前致谢

  • 我正在更新Fabric到新的Firebase,我的Firebase显示了旧的Fabric崩溃报告,而没有Firebase报告。现在我的firebaseCrashlytics版本是4.3.1。我添加了GoogleService.info.plist、脚本阶段“${PODS_ROOT}/FireBaseCrashLytics/run”和阶段的输入文件:${DWARF_DSYM_FOLDER_PATH}

  • date String ID Integer

  • 日期 字符串 id String CrashReport Object date Date id String

  • 将崩溃日志提交给远程服务器 进程: Main, Renderer 以下是一个自动提交崩溃日志到服务器的示例 const { crashReporter } = require('electron') crashReporter.start({ productName: 'YourName', companyName: 'YourCompany', submitURL: 'https:/

  • 日期 字符串 id String