命令 CompileSwift 因 Xcode 10 中的非零退出代码而失败
Command CompileSwift failed with a nonzero exit code in Xcode 10
目前更新到 Xcode 的最新版本(版本 10.0)后,项目无法构建,因为它发现了一些关于“Command CompileSwift failed with a nonzero exit code”错误的错误。
如何解决这个错误?
它们出现在我项目中使用的大多数 Pods(我使用 CocoaPods)中。
我已尝试将 pod 版本和 pods 更新到可用的最新版本,但问题仍然存在。
网上查了很多,关于这个问题的资料很少。
我的问题是由于不存在本机 Swift CommonCrypto,我使用了一个桥接头和一个带有 some magic 的目标将其包含在构建中。由于 CommonCrypto 现在是原生的,我通过删除目标和 #import
解决了这个问题,而是在我使用它的地方添加了一个 import CommonCrypto
。
目前我的构建正在运行。
这是我在最终成功之前尝试过的步骤:
- 在整个项目中搜索单词 CommonCrypto。
- 如果您的 Pod 包含 header 导入,请从 Podfile 中删除此 Pod 并执行 pod 安装。
- 清理并构建项目。
- 再次将 Pod 添加到 Podfile 并执行 pod 安装。
- 如果可能,请使用真实设备再次清理并构建项目。
如果您没有那个 Pod,也许您可以尝试对您在项目中可能遇到的一些旧 Pod 执行相同的步骤。
补充信息:此外,如果您在 Pod 中有一些代码错误,首先您需要解决该代码问题,然后再次尝试编译该项目。
我将复制在 project.pbxproj 中所做的更改。我知道它不是很有用,但它是 git 差异提交中唯一改变的东西:
Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added: BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };
希望对您有所帮助,
此致。
我搜索了整个网络,但找不到解决此问题的方法。我设法删除了部分中的 "Common Crypto" 路径:构建设置中的导入路径。
问题似乎是 "common crypto" 现在存在于 ios 12 sdk 的基础中。
所以":
只需在构建设置中删除文件 "common crypto" 的路径,项目就会像魅力一样构建! :)
只是添加到这个问题。我的问题与 CommonCrypto 无关。它创建了一个新的 Single App 应用程序并测试了 运行。编译器抱怨使用 Swift 4.2
在构建设置中将 Swift 语言更改为版本 4.0 解决了这个问题。不确定这是否是错误。
我遇到了这个问题,将项目的编译模式设置从增量更改为整个模块为我解决了这个问题。
我做了以下操作,效果很好:
- 打开 Xcode 首选项 (Command,)
- 转到
Locations
选项卡
- 单击显示 URL 路径的灰色小箭头
Derived Data
查找器 window 将打开并显示以下文件夹:
DerivedData
Archives
iOS DeviceSupport
UserData
DocumentationCache
iOS Device Logs
退出Xcode
- 删除
DerivedData
文件夹(它只包含以前构建的缓存)
- 重启Xcode
我的是名称间距问题。我有两个同名的文件。刚刚重命名它们并解决了。
在寻找其他地方之前,一定要先勾选 'stupid me' 框。 :)
让我分享一下我解决此问题的经验。
打开目标 -> 构建阶段 -> 复制捆绑资源并删除 info.plist。
注意:如果您正在使用任何扩展,请从目标中删除该扩展的 info.plist。
希望对您有所帮助。
这是 Swift 4.2 和 Xcode 10 的已知问题。我在这里找到一篇文章为我解决了这个问题:https://github.com/Yummypets/YPImagePicker/issues/236
简而言之,转到您的项目构建设置,添加名为 SWIFT_ENABLE_BATCH_MODE 的用户定义设置并将其值设置为 NO。
之前,我尝试了其他地方建议的以下每种方法(重建、退出 Xcode、清理和重建、清除派生数据文件)。 None 他们工作了。
一旦我根据文章添加了用户定义的构建设置,Swift 就会告诉我真正的错误。在我的例子中,这是一个缺失的},但它可能是任何数量的问题。
解决方法如下:
- 转到构建设置
- 搜索 SWIFT_COMPILATION_MODE
- 如果这是 "Whole Module" 用于发布配置,则将其更改为 "Incremental"。
- 立即归档。
当您将设置更改为 "Incremental" 时,过程成功。
从 Xcode 10 开始,我随机 得到了这个。我认为当我在构建开始时更改代码中的某些内容时会发生这种情况。
下一次构建每次都有效。
对我来说,清理项目使用
ShiftCommandK & Option Shift命令K.
我也遇到了同样的问题,我按照@cdeerinck 的建议做了,得到了下面的link which suggested adding a user-defined variable to the Build Settings to disable batch mode i.e. add a new user defined variable named SWIFT_ENABLE_BATCH_MODE and set it to NO, I was able to get more insights into the issue and I got to know that the error was in a framework using CommonCrypto which was added to it(by me) but since Xcode 10 it is exposed natively as part of Swift (for Apple platforms only), and adding it (or its existence from the previous version) was causing a name collision and hence it was throwing the error. To know more refer to the this link,它更详细地解释了这个问题。
我有同样的问题,我的解决方案是在构建设置中做一些小改动
SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";
就我而言,Carthage framework 部分的 Input Files 中有一个 framework 的重复条目 构建阶段
您很可能没有阅读整个错误消息。如果您在 "Command CompileSwift failed with a nonzero exit code" 消息上方查看,您应该会找到如下说明:
在这个例子中,我有两个同名的文件。修复后一切正常。
Class 重新声明会有问题。检查重复项 class 并构建。
运行 pod install --repo-update
并关闭并重新打开 x 代码解决了我所有 pods 出现此错误的问题。
错误 = 命令 CompileSwiftSources 失败,退出代码非零
在我的例子中当我发现这个错误时,我对编译感到局促。但是当我看到一些相关问题的答案时。我在我的项目中发现了一个重复文件。 viewController 与 class 文件相同。所以是的,当我意识到这一点时,我将其名称更改为新名称。是的,事情变了!!!
我试过了
- 关闭并重新开放 Xcode
- 清理构建文件夹
- 运行
pod install --repo-update
所有这些仍然没有解决问题。
重新启动 Mac 成功了!
这似乎是一个非常模糊的错误,所以我将分享我在 运行 进入此问题时所做的修复工作:
使用 Xcode 10.1 和 Swift 4.2 我几乎尝试了这里的所有建议,但其中 none 对我有用,然后我意识到我使用的依赖项不兼容使用 Swift 4.2,这导致我在其他 pods 上遇到此错误。所以要修复它,我只需要通过将它放在我的 Podfile
:
的末尾来强制该 pod 使用 Swift 4.0
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['TKRadarChart'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
end
对我来说,错误消息说我打开了太多模拟器文件无法构建 Swift。当我退出模拟器并重新构建时,一切正常。
在我的例子中,问题是由于 watchkit 扩展被设置为 swift 3 而主项目的目标被设置为 swift 4.2
目前更新到 Xcode 的最新版本(版本 10.0)后,项目无法构建,因为它发现了一些关于“Command CompileSwift failed with a nonzero exit code”错误的错误。
如何解决这个错误? 它们出现在我项目中使用的大多数 Pods(我使用 CocoaPods)中。
我已尝试将 pod 版本和 pods 更新到可用的最新版本,但问题仍然存在。
网上查了很多,关于这个问题的资料很少。
我的问题是由于不存在本机 Swift CommonCrypto,我使用了一个桥接头和一个带有 some magic 的目标将其包含在构建中。由于 CommonCrypto 现在是原生的,我通过删除目标和 #import
解决了这个问题,而是在我使用它的地方添加了一个 import CommonCrypto
。
目前我的构建正在运行。 这是我在最终成功之前尝试过的步骤:
- 在整个项目中搜索单词 CommonCrypto。
- 如果您的 Pod 包含 header 导入,请从 Podfile 中删除此 Pod 并执行 pod 安装。
- 清理并构建项目。
- 再次将 Pod 添加到 Podfile 并执行 pod 安装。
- 如果可能,请使用真实设备再次清理并构建项目。
如果您没有那个 Pod,也许您可以尝试对您在项目中可能遇到的一些旧 Pod 执行相同的步骤。
补充信息:此外,如果您在 Pod 中有一些代码错误,首先您需要解决该代码问题,然后再次尝试编译该项目。
我将复制在 project.pbxproj 中所做的更改。我知道它不是很有用,但它是 git 差异提交中唯一改变的东西:
Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added: BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };
希望对您有所帮助,
此致。
我搜索了整个网络,但找不到解决此问题的方法。我设法删除了部分中的 "Common Crypto" 路径:构建设置中的导入路径。 问题似乎是 "common crypto" 现在存在于 ios 12 sdk 的基础中。
所以":
只需在构建设置中删除文件 "common crypto" 的路径,项目就会像魅力一样构建! :)
只是添加到这个问题。我的问题与 CommonCrypto 无关。它创建了一个新的 Single App 应用程序并测试了 运行。编译器抱怨使用 Swift 4.2
在构建设置中将 Swift 语言更改为版本 4.0 解决了这个问题。不确定这是否是错误。
我遇到了这个问题,将项目的编译模式设置从增量更改为整个模块为我解决了这个问题。
我做了以下操作,效果很好:
- 打开 Xcode 首选项 (Command,)
- 转到
Locations
选项卡 - 单击显示 URL 路径的灰色小箭头
Derived Data
查找器 window 将打开并显示以下文件夹:
DerivedData
Archives
iOS DeviceSupport
UserData
DocumentationCache
iOS Device Logs
退出Xcode
- 删除
DerivedData
文件夹(它只包含以前构建的缓存) - 重启Xcode
我的是名称间距问题。我有两个同名的文件。刚刚重命名它们并解决了。
在寻找其他地方之前,一定要先勾选 'stupid me' 框。 :)
让我分享一下我解决此问题的经验。
打开目标 -> 构建阶段 -> 复制捆绑资源并删除 info.plist。
注意:如果您正在使用任何扩展,请从目标中删除该扩展的 info.plist。
希望对您有所帮助。
这是 Swift 4.2 和 Xcode 10 的已知问题。我在这里找到一篇文章为我解决了这个问题:https://github.com/Yummypets/YPImagePicker/issues/236
简而言之,转到您的项目构建设置,添加名为 SWIFT_ENABLE_BATCH_MODE 的用户定义设置并将其值设置为 NO。
之前,我尝试了其他地方建议的以下每种方法(重建、退出 Xcode、清理和重建、清除派生数据文件)。 None 他们工作了。
一旦我根据文章添加了用户定义的构建设置,Swift 就会告诉我真正的错误。在我的例子中,这是一个缺失的},但它可能是任何数量的问题。
解决方法如下: - 转到构建设置 - 搜索 SWIFT_COMPILATION_MODE - 如果这是 "Whole Module" 用于发布配置,则将其更改为 "Incremental"。 - 立即归档。
当您将设置更改为 "Incremental" 时,过程成功。
从 Xcode 10 开始,我随机 得到了这个。我认为当我在构建开始时更改代码中的某些内容时会发生这种情况。 下一次构建每次都有效。
对我来说,清理项目使用 ShiftCommandK & Option Shift命令K.
我也遇到了同样的问题,我按照@cdeerinck 的建议做了,得到了下面的link which suggested adding a user-defined variable to the Build Settings to disable batch mode i.e. add a new user defined variable named SWIFT_ENABLE_BATCH_MODE and set it to NO, I was able to get more insights into the issue and I got to know that the error was in a framework using CommonCrypto which was added to it(by me) but since Xcode 10 it is exposed natively as part of Swift (for Apple platforms only), and adding it (or its existence from the previous version) was causing a name collision and hence it was throwing the error. To know more refer to the this link,它更详细地解释了这个问题。
我有同样的问题,我的解决方案是在构建设置中做一些小改动
SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";
就我而言,Carthage framework 部分的 Input Files 中有一个 framework 的重复条目 构建阶段
您很可能没有阅读整个错误消息。如果您在 "Command CompileSwift failed with a nonzero exit code" 消息上方查看,您应该会找到如下说明:
在这个例子中,我有两个同名的文件。修复后一切正常。
Class 重新声明会有问题。检查重复项 class 并构建。
运行 pod install --repo-update
并关闭并重新打开 x 代码解决了我所有 pods 出现此错误的问题。
错误 = 命令 CompileSwiftSources 失败,退出代码非零
在我的例子中当我发现这个错误时,我对编译感到局促。但是当我看到一些相关问题的答案时。我在我的项目中发现了一个重复文件。 viewController 与 class 文件相同。所以是的,当我意识到这一点时,我将其名称更改为新名称。是的,事情变了!!!
我试过了
- 关闭并重新开放 Xcode
- 清理构建文件夹
- 运行
pod install --repo-update
所有这些仍然没有解决问题。
重新启动 Mac 成功了!
这似乎是一个非常模糊的错误,所以我将分享我在 运行 进入此问题时所做的修复工作:
使用 Xcode 10.1 和 Swift 4.2 我几乎尝试了这里的所有建议,但其中 none 对我有用,然后我意识到我使用的依赖项不兼容使用 Swift 4.2,这导致我在其他 pods 上遇到此错误。所以要修复它,我只需要通过将它放在我的 Podfile
:
post_install do |installer|
installer.pods_project.targets.each do |target|
if ['TKRadarChart'].include? target.name
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.0'
end
end
end
end
对我来说,错误消息说我打开了太多模拟器文件无法构建 Swift。当我退出模拟器并重新构建时,一切正常。
在我的例子中,问题是由于 watchkit 扩展被设置为 swift 3 而主项目的目标被设置为 swift 4.2