【问题标题】:our app crashed in iOS 9 which upload by Xcode 10我们的应用在 Xcode 10 上传的 iOS 9 中崩溃
【发布时间】:2018-09-17 09:06:59
【问题描述】:

我们的应用在通过 Xcode 10 GM Seed 上传到 App Store 的 iOS 9 中崩溃。使用 XCode 10 GM 调试或存档到 Ad_Hoc 时,它运行完美。这是一些调用堆栈。

Xcode 10 GM 对 image.assets 或其他有什么作用吗?

苹果回复

【问题讨论】:

  • 您至少需要发布崩溃日志,以便任何人都能提供帮助。这个问题的信息不多。
  • 我发送链接的图像,但它没有显示。
  • 更新到 xcode 10 后,我们的应用程序也出现了同样的崩溃。应用程序在 iOS 9.1 启动时随机崩溃
  • 我在我的应用程序以及 [UIImage imageNamed:] 调用上看到了类似的崩溃,仅在低于 9.3 的 iOS 上调用,它从使用 Xcode 10 编译的应用程序版本开始,链接到 iOS 12开发工具包。多年来,没有任何代码或图像发生变化,也从未崩溃过。
  • 我发布的应用程序(使用 Xcode 10 GM)在 iOS 9(低于 iOS 9.3.x)上启动时也会随机崩溃。似乎随机崩溃发生在从情节提要或 xib 文件加载视图后......现在准备使用 Xcode 9 再次提交

标签: ios xcode10


【解决方案1】:

编辑 4:来自 Xcode 10.2 beta 发行说明:

解决了在为本地或企业分发应用程序时影响应用程序与 iOS 9.0、9.1 和 9.2 的兼容性的问题。使用 Xcode 10 构建且部署目标为 iOS 9.0、9.1 或 9.2 的应用程序资产目录在使用本地或企业分发进行分发时,生成的内容与这些 iOS 版本的运行时不兼容。使用 Xcode 10.2 重新构建应用程序可解决此问题。 (46893768, 44535967)

编辑 3:来自修订后的 Xcode 10.1 发行说明:

资产目录

已知问题

包含使用 Xcode 10 或更高版本构建且部署目标设置为 iOS 9.0、9.1 或 9.2 的资产目录的应用程序会生成与这些 iOS 版本的运行时不兼容的内容。 (44535967, 45723580, 45723189)

问题仍然存在。 ?‍♂️

编辑 2:显然,该问题仍未完全解决。

编辑: Xcode 10.1 现已推出。

这已在 Xcode 10.1 beta 2 中修复:

解决了影响应用与 iOS 9.0、9.1 和 9.2 的兼容性的问题。包含使用 Xcode 10 构建的资产目录且部署目标设置为 iOS 9.0、9.1 或 9.2 的应用程序会生成与这些 iOS 版本的运行时不兼容的内容。使用 Xcode 10.1 重新构建应用程序可以解决此问题。 (44535967)

https://developer.apple.com/documentation/xcode_release_notes/xcode_10_1_beta_2_release_notes?language=objc

【讨论】:

  • 是否意味着部署目标为iOS8.0的应用不会崩溃?但是我的应用程序的部署目标是 8.0,并且仍然在 iOS9.0 中崩溃。为什么?
  • @samir Xcode 10.1 解决了这个问题,但仅在 1.5 天前发布。我的评论来自 4 周前。
  • 我刚刚使用 Xcode 10.1 发布了我的应用程序的新版本,但在运行 iOS 9.0-9.2 的设备上仍然出现崩溃。当它在发行说明中说它已修复时,我测试了这个错误,它似乎确实修复了它,但看起来 Xcode 10.1 的最终版本并没有修复这个问题。或者不是它的所有实例。
  • XCode 10.1 中尚未修复此错误。
  • Apple 刚刚修改了 10.1 的发行说明以再次打开此问题:developer.apple.com/documentation/xcode_release_notes/…
【解决方案2】:

与其等待 Apple 修复,不如使用 Xcode 9 提交,同时使用 NSInvocation 获取新 API。它涉及更多代码,但您的用户会很高兴。

【讨论】:

  • 这是一个糟糕的主意。当您针对旧 SDK 进行编译时,Apple 会以兼容模式运行其框架。如果您随后在所述兼容模式下继续调用意外的 API,您可以预期您的应用程序在最好的情况下会出现异常行为,在最坏的情况下会崩溃。此时,最好的办法是暂时禁用对的支持
  • 我的应用程序已经获得批准,没有任何奇怪的崩溃。我的应用正在使用我使用 NSInvocation 调用实现的 Apple Watch Series 4 的新功能。
  • @LeoNatan 很好的解释,你有解释这个机制的来源吗?我在苹果网站上找不到我自己:S
  • 来源:在 iOS 生态系统中超过 8 年的经验。应用在针对旧 SDK 编译时以兼容模式运行。
【解决方案3】:

我找到了 Xcode 10.1 Archive 的解决方案

将构建系统设置为传统构建系统而不是默认构建系统

文件 -> 工作区设置 -> 构建系统:更改为旧版构建系统

我在自己的应用程序上对其进行了测试,效果很好。

希望 Apple 能尽快修复此崩溃问题。

【讨论】:

    【解决方案4】:

    此错误已解决。

    资产目录

    已解决的问题

    解决了在 App Store 上分发应用时影响应用与 iOS 9.0、9.1 和 9.2 的兼容性的问题。当通过 App Store 分发时,使用 Xcode 10 和部署目标为 iOS 9.0、9.1 或 9.2 的应用资产目录生成的内容与这些 iOS 版本的运行时不兼容。使用 Xcode 10.1 重新构建并重新提交应用程序以解决问题。 (44535967, 45723580, 45723189) Xcode 10.1 Release Notes

    【讨论】:

      猜你喜欢
      • 2018-03-15
      • 2016-10-20
      • 1970-01-01
      • 2015-12-29
      • 2018-03-04
      • 2018-03-07
      • 2018-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多