【问题标题】:ReactNative app crashes occasionally on production with no Bugsnag reportReact Native 应用程序在生产中偶尔崩溃,没有 Bugsnag 报告
【发布时间】:2023-03-29 16:23:01
【问题描述】:

我的一位同事正在开发旧版 ReactNative 应用程序。 JavaScript 和 Java 领域的代码相当多,后者与 HERE Maps SDK 相关。

我们的两个客户每天都会遇到多次崩溃,我们无法弄清楚原因,因为我们没有错误报告。 Bugsnag 于去年年初(大约 2020 年 1 月)安装,我们没有任何东西可以帮助我们。在 Google Console 中也找不到任何东西。应用程序刚刚停止。

为了帮助我们进行调试,我们添加了一个日志系统,该系统通过专用 API 调用将调试信息发送到我们的后端。 它大致包括记录“函数 A 的开始”、“函数 A 的结束”等,因此我们知道应用程序在做什么。我们并不总是启用它,因为它会使应用更加不稳定。

与此同时,我们设法通过用户重新启动应用时 Firebase Auth 发送的登录事件了解应用何时崩溃。 查看崩溃时的日志对我们没有帮助,因为 1)它们看起来与一切正常时相同;2)我们没有涵盖所有方法调用,因为方法调用太多(在 JS 和 Java 中)。

我们的用户在安装在拖拉机舱内的三星 Galaxy Active Tab 2 上运行该应用程序。有些人使用 Galaxy Active Tab 3 也有这个问题。

我们已经通过了各种理论:

  • 会不会是机舱内太热而导致 Android 关闭?不,根据客户的说法,平板电脑始终处于开启状态。

  • 可能与电压变化有关吗?当我们尝试插拔时,一切都会继续正常工作。

  • 会不会是 Android 决定应用程序消耗过多的电池或 CPU(我们的应用程序需要 GPS)而将其关闭?我们已经让我们的应用在前台运行了几个小时,没有任何问题。

我们使用客户的凭据登录(他们知道)并且无法复制问题。

客户对帮助我们发现问题的兴趣正在慢慢消失,因此我们无法继续要求他们每周安装修补版本。

起初只有一个客户,但现在我们至少有 3 个用户抱怨神秘崩溃。

我们有点不知所措。

有没有人知道终极包罗万象的图书馆?或者平板电脑上的系统日志,我们可以获得更多信息?

提前感谢您的帮助!

【问题讨论】:

    标签: android crash react-native-android bugsnag


    【解决方案1】:

    以下推理基于硬件故障。如果您的软件(应用程序或操作系统)没有发生重大变化,则可能出现以下情况:

    Tab 2 于 2012 年发布,因此我们谈论的是使用时间长达 9 年的设备。如果用户都使用相同的硬件,并且软件有一段时间没有更改,则可能是某种硬件故障。这可能与拖拉机的振动、长时间的湿度有关,或者只是因为他们使用平板电脑的次数比您使用的多。可能有一些东西(半)松动,或者内存(SSD 或 RAM)可能开始出现故障。

    当然,这也可能是软件错误,但如果您很长时间没有更新,则不太可能 - 假设平板电脑也没有更新。

    您能否与一位客户交换您的平板电脑。最好是最常遇到问题的客户。然后观察问题是否解决。 通过这种方式,您将能够确定它是否与平板电脑(被损坏)或使用它的环境(拖拉机)有关。

    如果更换平板电脑后问题仍然存在,则可能是环境问题或软件问题,但您已经排除了硬件问题。 如果问题解决了,您就可以确定是硬件出了问题。

    【讨论】:

    • 您好,感谢您的回答。我会更新我的问题,因为我们的客户使用 Active Tab 2(2017 年发布)并且在 Active Tab 3 上遇到了同样的问题,我们发送给他们希望它能更好地工作......现在可以使用。我们已经在 Active Tab 2 和 3 平板电脑上测试了相同的应用程序,并且无法重现他们实验的崩溃。您可能对环境因素以及他们更密集地使用该应用程序是正确的。但是,我们如何才能获得有关应用程序被静默关闭/杀死的更多信息? Android上有系统日志吗?谢谢!
    • 有 logcat... 如果客户遇到崩溃,他们可以(及时)将设备连接到笔记本电脑/台式电脑,他们可以使用 Android 中的 adb logcat 命令工具链来检查发生了什么。
    • 谢谢。我们会在星期一试一试。
    • 我的同事今天经历了两次崩溃。她正在使用 AZ Recorder 记录她的测试,我们的应用程序和 AZ Recorder 同时被关闭。她没有运行其他应用程序,因此我们不能说 Android 会终止所有正在运行的应用程序,但是两个应用程序同时崩溃的几率是多少?肯定是对 Android 进行了某种清理,然后终止了正在运行的任何东西?
    【解决方案2】:

    经过大量测试,我的同事设法轻松地重现了该错误并找到了根本原因:Java 领域的一种方法中的内存管理不善。 所述方法负责改变地图上的标记方向,但是当它们的方向改变时它会复制标记。这会导致高内存消耗,当它达到某个点时,Android 会杀死所有正在运行的应用程序。

    我的同事修复了泄漏,我们很好!现在进入下一个错误。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-12
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2023-02-24
      相关资源
      最近更新 更多