【问题标题】:Unity iOS app crashes for unclear reasonsUnity iOS 应用程序因不明原因而崩溃
【发布时间】:2020-09-09 04:33:13
【问题描述】:

我正在尝试修复我的应用程序中经常发生的崩溃。终止应用程序的进程(通过点击设备的主页按钮两次并向上滑动进程)并重新打开应用程序后会显示崩溃警报。关闭 Apple 的崩溃弹出窗口后,应用程序启动没有问题。有时应用程序在后台崩溃,即使它关闭后已经过去了一段时间。这是我在设备上找到的日志(我必须替换包含公司名称的字符串)。

第一个日志,这与终止进程后应用启动时崩溃有关(由于 SO 的字符限制,我不得不粘贴链接):

Crash log#1
https://pastebin.com/kuPSAqJY

第二个日志,这个和第二个有关,不清楚的崩溃:

Crash log#2
https://pastebin.com/zcjdLpHq

您知道导致这些崩溃的原因吗?

在这两种情况下引发的异常是:

异常类型:EXC_CRASH (SIGKILL) 异常代码:0x0000000000000000, 0x0000000000000000 异常说明:EXC_CORPSE_NOTIFY 终止原因:命名空间 SPRINGBOARD,代码 0x8badf00d 终止说明:SPRINGBOARD,场景更新看门狗违规:应用程序:4258用尽真实(挂钟)时间允许10.00秒| ProcessVisibility:前景 |进程状态:正在运行 | WatchdogEvent: 场景更新 | WatchdogVisibility: 背景 | WatchdogCPUStatistics: ( | "Elapsed total CPU time (seconds): 6.200 (user 6.200, system 0.000), 63% CPU", | "Elapsed application CPU time (seconds): 4.853, 49% CPU" | )

[edit] 我注意到,当我通过 xCode(而不是使用 Testflight)在设备上构建和运行应用程序时,不会出现崩溃警报(但应用程序需要更长的时间才能启动)。但是,正在显示exception in xCode: exc_bad_access

有什么办法可以将这些地址“翻译”成更有帮助的东西吗?我注意到 NullReferenceException 也被抛出(它显示在输出中)。这两者可能有关系吗?

【问题讨论】:

    标签: c# ios unity3d crash


    【解决方案1】:

    Springboard 是 Apple 管理主屏幕的应用程序。在您的第二个日志中,这一行让我认为应用程序在允许的 10 秒内没有响应

    Termination Description: SPRINGBOARD, scene-update watchdog transgression: application<com.example.myapp>:4258 exhausted real (wall clock) time allowance of 10.00 seconds 
    

    这个应用程序也是在 Android 上运行还是仅在 iOS 上运行?通常,由于内存限制,应用程序会在后台崩溃 - 如果内存不足,iOS 将发送警告,然后如果忽略,则终止应用程序。如果这是您运行的唯一应用程序,您是否注意到是否会发生崩溃?

    还有一件事是尝试将 Xcode 连接到您的测试 iPhone 并运行分析,以查看内存使用情况和崩溃的确切行。 Unity 编译成 Xcode 项目,这里的语句与你的 unity 项目中的脚本不同。我发现通过 Xcode 进行调试在这些情况下很有帮助,但是您必须配置配置文件才能在 Xcode 中的实际设备上正确运行。如果您需要,我可以提供帮助。

    【讨论】:

    • 感谢您的回复。我的应用程序也可以在 Android 上运行,我没有注意到那里有类似的问题。我尝试将我的应用程序作为唯一的应用程序运行,但仍然会发生崩溃。我已经运行了分析,但无法在那里重新打开应用程序(一旦我关闭它,分析就会停止)。平均而言,我的应用程序使用大约 280 MiB 的内存。游戏这么多吗?它有时会上升到大约 330 MiB。我还能做什么?
    • 嗨!您能否带我完成使其崩溃的步骤,因为我不确定我是否完全理解 - 在您强行杀死​​应用程序,然后启动它之后,崩溃发生,无论是立即还是在后台?然后重新启动就可以了?我不认为 300 MB 太多。我认为正在发生的是 iOS 没有收到您的应用程序的响应,因此得出结论它已挂起并终止它。这意味着有一个后台任务耗时超过 10 秒。将焦点移至背景后,游戏是否会完全暂停?
    • 你说得对,就是这样。我强行杀死该应用程序。崩溃弹出窗口要么在那之后立即出现,要么在我再次启动应用程序时出现。在第二种情况下,启动画面已经出现,并且崩溃警报不会中断应用程序的启动(关闭它后,应用程序会像往常一样开始运行)。 “完全暂停”是什么意思?我自己不运行任何后台进程,所以我认为是,但 Unity 可能会自己在后台运行一些东西。编辑了问题并提供了更多详细信息。
    【解决方案2】:

    对于任何想知道的人:我还没有找到解决这个问题的方法。相反,我只是将应用程序提交到 App Store 并已被接受。崩溃弹出窗口不会出现在 Testflight 之外。

    【讨论】:

      【解决方案3】:

      对此有任何想法 - 我们正在经历同样的事情。

      【讨论】:

      • 我在 iOS 14 中遇到了这个 bug。对比 iPhone X 13.7、14.4、14.6,只有 14.4 崩溃了。这可能是苹果或统一的错误..
      猜你喜欢
      • 2013-04-09
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多