Xcode 10无法对项目进行归档

10

我正在尝试上传一个已经在App Store中的应用程序的新版本。之前的版本是使用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
@matt,我不确定如何准确回答这个问题,但是在报告导航器中,我可以看到一些文件(大多数只是协议文件)被标记为灰色,因此它们从未达到“已编译”状态,因此它们列在“所有问题”和“仅错误”过滤器下。如果需要更多有用的信息,请告诉我。谢谢! - nbloqs
3个回答

13

最后,我从项目构建设置的“有效架构”中删除了“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.

因此,我猜另一个解决方法是将“调试信息格式”从“带有dSYM文件的DWARF”更改为“DWARF”。


我们终于成功地进行了归档,但这只是经过几个小时的工作后:我们需要将先前精心选择的所有不同优化设置还原为XCode 10的默认设置。在默认配置中即使有非常小的差异也会导致它停止工作(关于归档)。 - nbloqs
1
@LexTang 我也遇到了同样的问题。但是在XCode 10.0中没有“有效架构”的选项。那么你是如何移除“armv7”的呢? - Ali Raza
1
我遇到了完全相同的问题,对我来说,从“有效架构”列表中删除armv7解决了这个问题,就像Lex建议的那样。希望苹果能找到更好的方法告诉我们已经完成了iPhone 4s。 - Nauman Aslam
如何移除armv7?在Xcode 10中找不到“有效架构”设置。 - sandpat
3
我仍然在 Xcode 10.2.1 中遇到这个问题,建议的解决方法都没有解决它。@LexTang 你在哪里找到那些存档日志? - Clifton Labrum
显示剩余3条评论

3

我们成功将DSYM存档,通过在构建设置中取消Swift编译的优化。

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

设置为 “无优化”

JacobJ84在苹果论坛上提出的原始解决方法:https://forums.developer.apple.com/thread/115185


0

就像LexTang所暗示的那样,其中一个解决方法是将“调试信息格式”设置为“DWARF”,而无需从有效架构中删除armv7。不幸的是,这样我们失去了自动崩溃符号化的选项。这样找到崩溃原因会更加困难,但仍然不是不可能的。在以下链接中,您可以找到有关符号化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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接