Unity iOS 应用因不明原因崩溃

Unity iOS app crashes for unclear reasons

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

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

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

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

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

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

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

Exception Type: EXC_CRASH (SIGKILL) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Termination Reason: Namespace SPRINGBOARD, Code 0x8badf00d Termination Description: SPRINGBOARD, scene-update watchdog transgression: application:4258 exhausted real (wall clock) time allowance of 10.00 seconds | ProcessVisibility: Foreground | ProcessState: Running | WatchdogEvent: scene-update | WatchdogVisibility: Background | 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。

有什么方法可以 "translate" 这些地址变成更有帮助的东西吗?我注意到 NullReferenceException 也被抛出(它显示在输出中)。这两个可能有关联吗?

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 将发送警告,如果忽略则在内存不足时终止应用程序。您是否注意到如果这是您唯一拥有的应用程序,是否会发生崩溃 运行ning?

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

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