【问题标题】:Xcode 10 not being able to archive projectXcode 10 无法存档项目
【发布时间】:2019-02-22 16:08:14
【问题描述】:

我正在尝试上传 AppStore 中已有应用的新版本。以前的版本是使用 Xcode 9.4 上传的。但现在需要 Xcode 10 才能获得批准。

遗憾的是,Xcode 无法归档项目,所以我在第一步卡住了,甚至无法生成提交的二进制文件。

没有错误:根据 Xcode,我们的归档过程有 2000 多个任务,只是卡在任意任务中(总是一样)。 Xcode 不会崩溃,不会显示错误,也不会抱怨。它只是无法通过该任务,并且 IDE 永远留在那里。

我们在不同的机器上进行了尝试,也尝试了两个版本:应用程序的先前版本(可以使用 Xcode 9.4 存档)和新版本,成功迁移到 Swift 4.2。

更新:

  • 旧版构建系统也不起作用。
  • 通用 iOS 设备构建也会卡住(不仅仅是存档),但软件可以编译并在模拟器上运行。
  • 尝试编译选择 Swift 4(而不是 4.2)的非迁移版本,结果相同。
  • 使用优化级别、整体编译与增量编译等,结果始终相同。
  • 在 Xcode 9.4 中,它可以很好地为 通用 iOS 设备 构建而无需更改任何内容。

【问题讨论】:

  • 我们总是卡在什么任务上?
  • @matt,我不确定如何回答这个问题,但在报告导航器上,我可以看到一些文件(其中大多数只是带有协议的文件)是灰色的,所以它们永远不会到达“已编译”状态,因此它们列在“所有问题”和“仅错误”过滤器下。如果我能提供更多有用的信息,请告诉我。谢谢!

标签: ios xcode xcode10 swift4.2


【解决方案1】:

我们可以通过在构建设置中删除对 Swift Compile 的优化来使用 DSYM 将其归档。

构建设置 -> Swift 编译器 - 代码生成 -> 发布

设置为“无优化”

JacobJ84 在 Apple 论坛上建议的原始修复:https://forums.developer.apple.com/thread/115185

【讨论】:

    【解决方案2】:

    就像 LexTang 暗示的那样,无需从有效架构中删除 armv7 的有效解决方法之一是为“调试信息格式”设置“DWARF”。不幸的是,这样我们就失去了自动崩溃符号的选项。这种方式找到崩溃的原因要困难得多,但仍然不是不可能的。在以下链接中,您可以找到有关象征 iOS 崩溃的更多信息: https://coderwall.com/p/ezdcmg/symbolicating-an-ios-crash-log-without-the-original-dsym-file https://www.apteligent.com/technical-resource/symbolicating-an-ios-crash-report

    【讨论】:

      【解决方案3】:

      最后,我从项目构建设置的“有效架构”中删除了“armv7”。它存档了!这意味着 iPhone 4S 不再兼容。 但是,我认为苹果不会以这种方式弃用 4S。通过深入研究日志,我发现它一直在创建 dSYM 符号。

      [17:15:49]: ▸ Generating 'ZUS_INHOUSE_DEV.app.dSYM'
      [17:16:15]: ▸
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _lum_convert
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _ff_init_desc_hscale
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _lum_h_scale
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _ff_init_desc_cfmt_convert
      [17:16:15]: ▸
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _ff_init_desc_chscale
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _chr_h_scale
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _ff_init_desc_no_chr
      [17:16:15]: ▸ (arm64)  could not find object file symbol for symbol _no_chr_scale
      [17:16:30]: ▸ (arm64)  could not find object file symbol for symbol _vlc_entry__audio_filter_libscaletempo_pitch
      [17:16:30]: ▸
      [17:16:30]: ▸
      [17:16:30]: ▸
      [17:16:30]: ▸
      [17:16:30]: ▸
      [17:16:30]: ▸
      [17:16:30]: ▸ (arm64)  failed to insert symbol '_best_overlap_offset_float' in the debug map.
      

      因此,我想,另一种解决方法是将“Debug Infomation Format”从“DWARF with dSYM File”更改为“DWARF”。

      【讨论】:

      • 我们终于设法存档了,但这只是经过几个小时的工作:我们需要将所有不同的优化设置(之前仔细选择)恢复为 XCode 10 的默认设置。默认配置中的差异非常小,它只是停止工作(关于存档)。
      • @LexTang 这里有同样的问题。但 XCode 10.0 中没有“有效架构”选项。那么你是如何删除“armv7”的。
      • 遇到了完全相同的问题,对我来说,从有效架构列表中删除 armv7 解决了 Lex 建议的问题。希望苹果能找到一种更好的方式来告诉我们已经完成了 iphone 4s。
      • 如何删除armv7?在 Xcode 10 中找不到有效架构的设置。
      • 我在 Xcode 10.2.1 中仍然遇到这个问题,建议的修复都没有解决它。 @LexTang 你在哪里找到这些存档日志?
      猜你喜欢
      • 2019-01-29
      • 2022-06-13
      • 2019-05-13
      • 1970-01-01
      • 2020-10-28
      • 2022-01-16
      • 2022-06-20
      • 1970-01-01
      • 2018-09-01
      相关资源
      最近更新 更多