Xcode 10构建失败,提示“Command CompileSwift failed with a nonzero exit code”

23

我最近将Xcode更新到了10版本,尝试构建我的项目时遇到了一个奇怪的错误。我目前使用的是Swift 4.0,我尝试升级到Swift版本4.2,但在这个过程中,在我的许多框架中都出现了同样的错误。

Command Compile Swift 失败,退出码为非零值

到目前为止,我已经删除了生成文件夹,并更新了所有的Pods,也通过终端命令删除并重新安装了它们。

sudo gem install cocoapods-deintegrate cocoapods-clean
pod deintegrate
pod clean
pod install

以下方法不能解决我的问题。不过,我找到了一些可能可行的东西,就是在Build Setting -> valid architectures中添加arm64架构并启用自动代码。但是,当我检查时它已经存在,并且代码签名已经启用。

此外,我还有一些与框架有关的其他构建错误。

SwiftMessages

类型'SwiftMessages.Config'的值没有成员'presentationContext'

WhatsNewKit

调用中缺少参数“backgroundColor”

我向每个框架的开发者提出了问题,寻求帮助解决这些问题。

在 SwiftMessage GitHub 上的问题 在 WhatsNewKit GitHub 上的问题

当我点击presentationContext时,它会将我带到SwiftMessages框架内的结构体中。通常,在出现“没有成员”的警告时,我无法单击以查看其存在的原始位置。

我认为这与 CocoaPods 有关,但我还没有找到解决方法。我该怎么做才能解决这个问题?如果有人能提供帮助,将不胜感激已经困在这个问题上一天了。

更新: 这两个框架的最新版本是为 Swift 4.2 构建的。当我将每个框架的版本更改为使用 Swift 4.0 构建的版本时,项目就可以构建了。


我有同样的问题,这是在我更新到Xcode10并尝试进行pod更新后发生的。 - Roei Nadam
1
我曾经遇到过相同的问题(或者非常相似)。尝试清理你的工作空间(Cmd+Shift+K),然后执行 pod deintegrate 命令,接着再执行 pod install 命令。你也可以尝试删除你的派生数据文件夹(通常是 ~/Library/Developer/Xcode/DerivedData)。 - Alejandro Iván
请在类似主题中尝试以下答案:https://dev59.com/HVYN5IYBdhLWcg3w578u#52499525 - Denis Kutlubaev
尝试在类似的主题中查看此答案:https://dev59.com/HVYN5IYBdhLWcg3w578u#52499525 - Denis Kutlubaev
@AlejandroIván 由于某种原因,我看不到Xcode文件夹。在macOS中是否有某个设置可以使Finder隐藏某些文件,或者我的Xcode文件夹安装在其他位置? - daniel
显示剩余3条评论
19个回答

9
请确保你的项目Swift语言版本正确。SwiftMessages 6.0.0适用于Swift 4.2。 Xcode->Project->Target->Build Settings->Swift Language Version

不知何故,我的框架库中存在不同版本的Swift。因此,确保它们都相同就解决了我的问题。在我的情况下,我希望它们全部都是Swift 4.2。请记住,在迁移过程中可以使用Xcode的“编辑”->“转换”->“到当前Swift语法”,并始终确保构建设置下的Swift版本已相应更改。 - Phantom59

5

请确保您的项目构建设置中的优化级别无优化[-Onone]

输入图像描述


5
我用如下方法解决了问题:
  1. 将你的.pod文件中所有的Pod注释掉
  2. 在终端中运行命令pod install --no-repo-update
  3. 打开Xcode并进行清理项目并重新构建
  4. 现在打开.pod文件,并取消注释第一个库
  5. 在终端中运行命令pod install

对于你的.pod文件中每一个未被注释的库,重复步骤2-3-4-5

希望这能帮到你。


这个方法刚刚让我免于崩溃! - Mudasar Rauf

4

请将Swift版本设置为4.2,然后进行pod deintegrate、pod install操作,帮我解决这个问题。感谢@alejandro-iván的帮助。


4

如果您的应用程序不是Swift 4.2,而使用pod SwiftMessages,则需要使用5.01版本

pod 'SwiftMessages', '~> 5.0.1'

它会像魔法一样实现。


4

enter image description here

当我在两个不同的组中使用相同的类名时,发生了这个错误。然后我重命名其中一个类,问题得到解决。

4

早上好! 使用“command + shift + k”进行清理。 关闭Xcode。 导航到存在Podfile的项目目录。 执行pod update/pod install命令。 打开x.xcworkspace文件。


3

我有几个框架(自制的)和我的应用程序。不知何故,它们在Swift版本方面不同步。确保所有框架都是相同的版本。在我的情况下,它们都需要设置为Swift 4.2。如果您还没有进行到4.2的迁移,请记住Xcode会帮助您完成此操作: 编辑 -> 转换 -> 到当前Swift语法。


3

只有在需要重新安装Pod时,使用该命令pod install
请参见下面的附件

enter image description here


3
所有答案对我都有帮助。在我的情况下,我只手动安装框架,但这种问题也会发生。我尝试了所有的答案,在构建过程中仍然遇到了此问题。奇怪的是,在编码时,我可以使用cmd-click解决所有“丢失”的组件。我还清理并删除了派生数据,重新启动了Xcode等。
最终,我通过引入以下额外步骤使其正常工作:
在每个框架项目/目标(包括我的自己)上:
- 验证一致的Swift版本(在我的情况下为4.2) - 将“仅为活动体系结构构建”设置为“否” - 将有效体系结构设置为“arm64,armv7”(以与基本项目相匹配) - 将优化级别设置为“无”(用于调试) - 将编译模式设置为“整体”

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