【问题标题】:App rejected due to non reproducible bug: possible reasons?应用因不可重现的错误而被拒绝:可能的原因?
【发布时间】:2013-01-21 08:34:38
【问题描述】:

我们的一个应用最近第二次被拒绝,因为“我们发现您的应用无法在运行 iOS 6.0.1 的 iPad 上启动,无论是在 Wi-Fi 还是蜂窝网络上”。

苹果提供的崩溃日志以:

开头

事件标识符:CE8868A8-1C68-4161-91AD-DB50D3D5780B
CrashReporter 密钥:83b816533ead866666681b87f5736242d8aac2ff
硬件型号:xxx
流程:测试滑雪板 [29192]
路径:/var/mobile/Applications/890E8D9C-6A17-4EA6-9A06-5503B3D35888/Test Skis.app/Test Skis 标识符:测试滑雪板
版本: ??? (???)
代码类型:ARM(本机)
父进程:launchd [1]

日期/时间:2013-01-04 19:24:52.667 -0800
操作系统版本:iOS 6.0.1 (10A523)
报告版本:104

异常类型:EXC_CRASH (SIGABRT)
异常代码:0x0000000000000000, 0x0000000000000000
崩溃的线程:0

我的问题不是关于如何解决我们特定代码中的问题,而是一个更普遍的问题:我们无法使用相同的二进制文件(制作 Ad Hoc 版本)、设备和操作系统版本来重现崩溃苹果应该使用的那个。

这种崩溃怎么可能发生在 Apple 审阅者的设备上,而不是我们的设备上? Apple 审阅者的设备是否以可以解释差异的非标准方式配置?

我在 Stack Overflow 上发现了另一个问题,提到了类似的问题,但也没有得到回答:Apple rejected app due to a crash which is not reproducing

【问题讨论】:

  • 丢失了崩溃报告中最重要的部分,即您发布的内容下方的所有文本。没有它,没有人可以遗憾地告诉你可能是什么问题。请附上它并确保它是符号化的。
  • @Kerni:完整的符号化崩溃报告可在gist.github.com/4571561 获得。但是,我想了解的是,我们的设备怎么可能不会崩溃,而 Apple 评论家却会崩溃。
  • 另外一点信息:Apple 还在飞行模式下测试应用程序(或者准确地说是没有互联网连接),这可能是导致崩溃的原因
  • 这在一般情况下是正确的,但在阅读崩溃报告时显然与此无关。
  • 我有一个类似的问题,应用程序在我的测试设备和模拟器上运行良好,并与 Apple 崩溃。原来它与“优化级别”有关,查看构建设置,将调试设置为最快、最小,看看是否可以重现。

标签: ios ipad appstore-approval


【解决方案1】:

我的猜测是您的临时构建配置在某些方面与您的发布/分发配置不同。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,Apple 给我发了一份崩溃报告让我查看。我学会了如何符号化它们,但我的应用程序中的相关代码行不会符号化。所以我尝试进行一些其他更改并重新提交,导致同样的拒绝。

    最后我要求他们发送更多详细信息,因为我在两个设备和模拟器上进行了测试。今天我看到他们“开发商从销售中删除”,然后“准备出售”。所以我想我的应用程序很好用,我这边没有任何改变。

    【讨论】:

      【解决方案3】:

      您似乎正在尝试实例化一个 nib(名称未知,因为崩溃报告中缺少异常原因)并且它不存在。确保应用所需的所有 nib 实际上是您发送给 Apple 的构建的一部分。

      【讨论】:

      • 如果缺少 nib,任何 Ad-Hoc 构建也会崩溃,不是吗?
      • 它可能会也可能不会。也许存在构建问题,也许这只发生在特定设备类型上,例如平板电脑。从我们的角度来看,没有足够的信息可以知道这一点。你为什么不拿 appstore 二进制文件,打开它并检查你需要的所有 nib 是否都在里面呢?还要确保文件名完全正确,因为 iOS 设备上的文件名区分大小写。 Hardware Model: 字符串可能会有所帮助,但您的报告显示 xxx 所以我们也无能为力。否则,崩溃报告非常清楚。
      • 我还注意到,Hardware Model 未在 Apple 发送的崩溃报告中指定,当我问“Apple 审阅者的设备是否以非标准方式配置时,我想到了这一点解释一下区别?”。 Hardware Model 总是在标准设备的崩溃报告中指定,不是吗?我一直在考虑这个可能的解释,因为笔尖名称是使用以下代码指定的:switch(UIDevice.currentDevice.userInterfaceIdiom) ...
      • 如果你这样做,问题是你没有测试哪些设备类型以及你有不同的笔尖。可能是一个开始看:)
      • @Kerni:-我刚刚检查了二进制文件并找到了所需的笔尖-关于设备类型,switch(UIDevice.currentDevice.userInterfaceIdiom)only 区分了 iPad 和 iPhone。就像我写的那样,Apple 提到他们使用 iPad 进行了测试。我们在 iPad 1、2 和 3 上进行了测试,但无法重现崩溃。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 2016-08-09
      • 2022-01-01
      • 2017-02-04
      • 1970-01-01
      • 2011-01-20
      • 1970-01-01
      相关资源
      最近更新 更多