命令 CompileSwift 在 Xcode 10中由于非零退出代码而失败

目前升级到最新版本的 Xcode (版本10.0)后,该项目无法建立,因为它发现了一些错误,关于一些“ Command CompileSwift 失败,非零退出代码”错误。

我如何解决这个错误? 它们出现在我在项目中使用的大多数 Pods (我使用 CocoaPods)中。

我已经尝试更新的吊舱版本和吊舱到最新的版本可用,但问题仍然存在。

我已经在网上搜索了很多,关于这个问题的信息很少。

276883 次浏览

我的问题是,由于本地 Swift 通用密码的不存在,我使用了一个桥接头和一个目标,使用 一些魔法在构建中包含了它。因为 通用密码现在是本机的,所以我通过删除目标和 #import来解决这个问题,而是在使用它的地方添加了一个 import CommonCrypto

目前我的构建正在运行。 以下是我尝试过的步骤,直到最终奏效:

  1. 在整个项目中搜索单词 CommonCrypto。
  2. 如果您有一个包含该头导入的 Pod,请从 Podfile 删除该 Pod 并执行 Pod 安装。
  3. 清理并建立项目。
  4. 再次将吊舱添加到 Podfile 并执行吊舱安装。
  5. 如果可能,使用真正的设备清理并再次生成项目。

如果你没有那个 Pod,也许你可以尝试用你在项目中可能遇到的一些旧 Pod 做同样的步骤。

添加的信息: 如果您有一些代码错误内的 Pod,首先您需要解决该代码问题,然后尝试再次编译该项目。

我将复制在我的 project. pbxproj 中所做的更改。我知道这不是很有帮助,但它是改变 git 差异的唯一一件事,提交:

Removed: BDC9821B1E9BD1B600ADE0EF /* (null) in Sources */ = {isa = PBXBuildFile; };
Added:   BDC9821B1E9BD1B600ADE0EF /* BuildFile in Sources */ = {isa = PBXBuildFile; };

我希望这个能帮上忙,

问候。

我搜索了整个网络,但我找不到任何解决这个问题的办法。我设法删除了“公共加密”路径一节: 在构建设置中的导入路径。 问题似乎是“通用加密”现在存在于 ios 12 sdk 的基础中。

所以”:

只要删除路径文件“公共加密”在构建设置和项目将建立像一个魅力!:)

我只是想补充一下这个问题。我的问题和 Common Crypto 没有任何关系。它创建了一个新的 Single App 应用程序并进行了运行测试。编译器抱怨使用 Swift 4.2

在构建设置中将 Swift 语言更改为4.0版修复了这个问题。不确定这是否是一个错误。

我有这个问题,并改变了项目的编译模式设置从增量到整体模块为我修复它。

enter image description here

我做了以下几件事,效果非常好:

  • 打开 Xcode 首选项(命令,)
  • 转到 Locations选项卡
  • 单击显示 Derived Data URL 路径的灰色小箭头
  • 查找器窗口将打开并显示以下文件夹:

    • DerivedData
    • Archives
    • iOS DeviceSupport
    • UserData
    • DocumentationCache
    • iOS Device Logs
  • 退出 Xcode

  • 删除 DerivedData文件夹(它只包含以前版本的缓存)
  • 重启 Xcode

我的是一个名称间距问题。我有两个同名文件。只要重命名它们和解决。

总是要先勾选“愚蠢的我”,然后再找别的地方。 :)

让我分享一下修复这个问题的经验。

打开目标-> 构建阶段-> 复制包资源并删除 info.plist。

注意: 如果使用任何扩展名,请从 Targets 中删除该扩展名的 info.plist。

希望能有帮助。

这是 Swift 4.2和 Xcode 10的一个已知问题。我在这里找到一篇文章帮我修好了它: https://github.com/Yummypets/YPImagePicker/issues/236

简而言之,转到您的项目生成设置,并添加一个名为 SWIFT _ ENABLE _ BATCH _ MODE 的用户定义设置,并将其值设置为 NO。

以前,我在其他地方尝试了以下方法(重新构建、退出 Xcode、清理和重新构建、清除派生数据文件)。都没用。

一旦我为每篇文章添加了用户定义构建设置,Swift 就会告诉我真正的错误。对我来说,这是一个缺失} ,但它可能是任何数量的问题。

解决办法如下: - 进入构建设置 - 搜索 SWIFT _ COMPILATION _ MODE - 如果这是“整体模块”的发布配置,然后改为“增量”。 档案室。

当您将设置更改为“增量”时,进程成功。

我得到这个随机 从 Xcode 10开始。我认为它发生时,我改变了代码中的东西,而建设开始。 下一个版本每次都能正常工作。

对我来说,只是清洁项目工程使用 Shift 命令K & 选择换挡命令K.

我也遇到了同样的问题,我按照@cdeerinck 的建议,找到了下面的 链接,它建议在 生成设置中添加一个用户定义的变量来禁用批处理模式,即添加一个新的用户定义的变量名为 SWIFT _ ENABLE _ BATCH _ MODE并将其设置为 没有,我得以对这个问题有更深入的了解,我得知这个错误是在一个使用 通用密码的框架中发生的,这个框架是由我添加到它的,但是由于 Xcode 10是作为 Swift (仅适用于苹果平台)的一部分原生公开的,并且添加它(或者它在之前版本中的存在)会导致名称冲突。要了解更多,请参考 这个链接,其中详细解释了这个问题。

我有同样的问题,我的解决方案是在构建设置中改变一些小东西

SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";

在我的例子中,在 构建阶段迦太基框架部分的 输入文件中有一个框架的重复条目

您很可能没有读取完整的错误消息。如果你看到“ Command CompileSwift 因为非零退出代码而失败”消息,你应该会发现一些像下面这样的规范:

enter image description here

在这个例子中,我有两个同名的文件。一旦我修复了它,一切工作正常。

类重新声明将是问题。检查重复的类和构建。

运行 pod install --repo-update并关闭和重新打开 x-code 修复了所有出现这个错误的吊舱的问题。

ERROR = CompileSwiftSource 命令失败,退出代码为非零

在我的例子中,当我发现这个错误时,我被编译限制了。但是当我看到一些相关的问题答案。我在我的项目中发现了一个复制文件。其中同样的 viewController 作为类文件存在。所以当我意识到的时候,我把它的名字改成了新的。是的,一切都变了! ! !

我试过了

  • 关闭和重新打开 Xcode
  • 清理生成文件夹
  • 运行 pod install --repo-update

所有这些仍然没有解决问题。

重新启动 Mac 就成功了!

这似乎是一个相当模糊的错误,所以我将分享我在遇到这个问题时所做的修复工作:

使用 Xcode 10.1和 Swift 4.2,我尝试了几乎所有的建议,但没有一个对我有用,然后我意识到我使用的一个依赖项与 Swift 4.2不兼容,这导致我在其他播客上得到这个错误。所以为了解决这个问题,我不得不把这个放在我的 Podfile的末尾,强迫这个播放器使用 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

对我来说,错误消息说我有太多的模拟器文件打开,以建立迅捷。当我退出模拟器,重新建立,一切工作。

在我的案例中,问题是由于 watch kit 扩展被设置为 Swift 3,而主项目的目标设置为 Swift 4.2