【问题标题】:iOS app crashes for apple review team but not on my device苹果审查团队的 iOS 应用程序崩溃但我的设备上没有
【发布时间】:2012-12-10 17:35:57
【问题描述】:

我的应用程序在我的 iDevices 上没有崩溃,但苹果审查小组说它在 ipad 6.0.1 上崩溃了。这是重新符号化日志的相关部分:

Last Exception Backtrace:
0   CoreFoundation                  0x327fb29e __exceptionPreprocess + 158
1   libobjc.A.dylib                 0x394dd97a objc_exception_throw + 26
2   UIKit                           0x38897d54 +[UIStoryboard storyboardWithName:bundle:] + 436
3   UIKit                           0x386da406 -[UIApplication _loadMainStoryboardFileNamed:bundle:] + 38
4   UIKit                           0x38563794 -[UIApplication _runWithURL:payload:launchOrientation:statusBarStyle:statusBarHidden:] + 524
5   UIKit                           0x3850bc34 -[UIApplication handleEvent:withNewEvent:] + 1000
6   UIKit                           0x3850b6c8 -[UIApplication sendEvent:] + 68
7   UIKit                           0x3850b116 _UIApplicationHandleEvent + 6150
8   GraphicsServices                0x35c8759e _PurpleEventCallback + 586
9   CoreFoundation                  0x327d067e __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 10
10  CoreFoundation                  0x327cfee4 __CFRunLoopDoSources0 + 208
11  CoreFoundation                  0x327cecb2 __CFRunLoopRun + 642
12  CoreFoundation                  0x32741eb8 0x32739000 + 36536
13  CoreFoundation                  0x32741d44 CFRunLoopRunInMode + 100
14  UIKit                           0x38562478 -[UIApplication _run] + 664
15  UIKit                           0x3855f2f4 UIApplicationMain + 1116
16  MyApp                           0x0007362e main (main.m:16)
17  MyApp                           0x000735e4 start + 36

这是否意味着故事板是问题所在(第 2 行)?

【问题讨论】:

  • 基于来自UIStoryboard storyboardWithName:bundle: 的异常(并且没有方便的 UIStoryboard 源代码),我建议加载故事板可能是一个问题。您的所有资源都打包正确了吗?
  • 在您自己的设备上进行测试时,您是否尝试过全新安装?从您的设备中删除该应用程序。在 Xcode 中,执行 Product|Clean,然后在您的设备上进行构建和测试。
  • 是的,我的所有资源都已正确打包,并且我已经完成了几次全新安装。它也不会使用临时配置文件进行崩溃签名。
  • 愚蠢的问题:您的测试设备是运行 6.0.1 的 iPad 吗?你也试过在 iPad 6.0.1 上运行的模拟器吗?
  • 是的,我已经在运行 6.0.1 的 iPad 和使用 6.0.1 的模拟器中对其进行了测试。我已经尝试了所有方法,但它不会崩溃。

标签: ios crash appstore-approval


【解决方案1】:

回答你的问题:

这是否意味着故事板是问题所在(第 2 行)?

这意味着最有可能的问题与情节提要加载有关 - 无论是情节提要还是捆绑包 - 因为这是引发异常的地方。在不知道 UIStoryboard 的源代码以及第 436 行中导致它抛出异常的内容的情况下,这可能与您从非 Apple 员工那里得到的一样具体。

要超越这一点并实际在本地重现崩溃(以便您可以努力修复它):

  • 验证包装/进行全新/全新安装(如 cmets 中的建议)
  • 在不同的设备上尝试(也许有一些东西残留物无法正确清除)
  • 尝试使用较旧的 iOS 版本(可能他们不小心为您提供了错误的 iOS 版本信息?)
  • 尝试在您的应用处于后台时模拟低内存环境(可能崩溃与您的应用在这种情况下在后台关闭和重新启动有关?)

如果您无法重现问题,您更有可能希望从审核团队获得更多信息,而不仅仅是堆栈跟踪:

  • 您能否获得有关它们如何导致崩溃的更准确的重现步骤?
  • 这是对现有应用程序的更新吗?他们可能有未正确清理的旧版应用吗?

【讨论】:

  • 我已经删除了我的旧 Storyboard,重建一个新的,Apple 接受了它。所以我会接受你的回答,因为它提供了解决问题的概述。
【解决方案2】:

我的猜测是,您在某些时候更改了情节提要文件的名称,但并未反映 Xcode 中的(项目)>(目标)>常规>部署信息>主界面下的更改。

因此,它仍然可以在您的设备上运行(因为您仍然在该设备上安装了旧名称的情节提要文件以及新名称),但是在其他设备上新安装时它会崩溃,其中只有具有新名称的情节提要文件已存在。

【讨论】:

    猜你喜欢
    • 2023-03-24
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多