【问题标题】:Command CompileSwift failed with a nonzero exit code in Xcode 10 [duplicate]Command CompileSwift 在 Xcode 10 中以非零退出代码失败 [重复]
【发布时间】:2019-02-22 13:00:13
【问题描述】:

在更新到当前 Xcode 的最新版本(10.0 版)后,项目无法构建,因为它发现了一些关于“Command CompileSwift failed with a nonzero exit code”错误的错误。

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

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

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

【问题讨论】:

  • pod install --repo-update,然后在您的 xCode 清理构建文件夹中并删除派生数据,然后再次尝试构建。
  • 它不起作用@inokey
  • 在项目设置中检查部署目标。
  • iOS 部署目标设置为 9.0,有问题吗?再次感谢@inokey
  • 另一种可能的解决方案(对我有用)在这里找到:stackoverflow.com/a/52481653/96153

标签: ios swift xcode swift4 xcode10


【解决方案1】:

您很可能没有阅读完整的错误消息。如果您查看上方的“Command CompileSwift failed with a nonzero exit code”消息,您应该会发现一些如下规范:

在这个例子中,我有两个同名的文件。一旦我修复它,一切都会正常运行。

【讨论】:

  • 你好,@Samy。你到底做了什么?
  • 在我的示例中,有两个文件具有相同的名称,因此我更改了其中一个。
【解决方案2】:

我的问题是由于不存在原生 Swift CommonCrypto,我使用了桥接头和带有 some magic 的目标,将其包含在构建中。由于 CommonCrypto 现在是原生的,我通过删除目标和#import 解决了这个问题,而是在我使用它的地方添加了一个import CommonCrypto

【讨论】:

  • 是的!我也有这个(没有 cocoapods 或类似的东西,只有 CommonCrypto)谢谢你拯救我的一天
  • @OmidAriyan 你好,伙计们,这个问题让我在过去两周内无法工作:s,我尝试了几乎所有在这个网站上找到的解决方案,但它根本不起作用。对于你的回答,我实际上没有明白这一点。你能详细解释一下你的答案吗?请问有什么问题,我应该按步骤做什么:(:(
  • @mojtabaalmoussawi 在 Xcode 10 发布之前,为了在我的项目中使用 CommonCrypto,我基本上遵循了 stackoverflow.com/a/42852743/1038245。我只是试图撤消它以修复作为此问题主题的错误。
【解决方案3】:

我尝试过

  • 关闭和重新打开 Xcode
  • 清理构建文件夹
  • 正在运行pod install --repo-update

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

重启 Mac 成功了

【讨论】:

  • 我将我的 xcode 更新到 10.3 并遇到了类似的问题。我尝试了所有技巧,但没有任何帮助,但如此处粗体所示,“重新启动 mac 成功了”,它对我有用。
  • 讨厌这么说,但重新启动我的 mac 确实为我解决了这个问题。顺便说一句,我将 Xcode 升级到 10.3 后出现此错误。
  • 在您尝试任何“重新启动 Mac”之前。这应该是最佳答案。
  • Clean Build Folder 非常适合我(只需清理,无需重新启动 Mac)。
  • 重启 Mac 的事情可能看起来很有趣,但这是一个有效的观点!就我而言,我修改了.bash_profile,然后在终端中快速加载它:source .bash_profile 并开始工作。所以几天后我回来后,我又遇到了问题,因为.bash_profile 没有加载......然后重新启动确实有帮助:)
【解决方案4】:

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

使用 Xcode 10.1 和 Swift 4.2 我在这里尝试了几乎所有的建议,但没有一个对我有用,然后我意识到我使用的依赖项与 Swift 4.2 不兼容,这导致我在其他设备上遇到此错误豆荚。所以要修复它,我只需要通过将它放在我的 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

【讨论】:

  • 我为所有 pod 输入了 5.0 swift 版本
【解决方案5】:

在我的情况下,问题是由于 watchkit 扩展设置为 swift 3 而主项目的目标设置为 swift 4.2

【讨论】:

  • 就在这里!这让我困扰了很久!当您向库中添加框架/扩展时,请确保扩展和库都使用相同的 Swift 语言版本!谢谢@Itay
【解决方案6】:

对我来说,错误消息说我打开了太多模拟器文件来构建 Swift。当我退出模拟器并重新构建时,一切正常。

【讨论】:

  • 这与我连接到真实设备的情况相似,但已断开连接并且构建工作正常。
【解决方案7】:

ERROR = Command CompileSwiftSources 失败,退出代码非零

在我的情况下,当我发现这个错误时,我在编译时感到局促。但是当我看到一些相关的问题答案时。我在我的项目中找到了一个重复文件。相同的 viewController 作为类文件存在的地方。所以是的,当我意识到它时,我将它的名称更改为新名称。是的,事情发生了变化!!!

【讨论】:

    【解决方案8】:

    运行 pod install --repo-update 并关闭并重新打开 x-code 解决了我所有出现此错误的 pod 上的问题。

    【讨论】:

      【解决方案9】:

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

      【讨论】:

        【解决方案10】:

        在我的例子中,在 Build PhasesCarthage framework 部分的 Input Files 中有一个框架的重复条目

        【讨论】:

          【解决方案11】:

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

          SWIFT_COMPILATION_MODE = singlefile;
          SWIFT_OPTIMIZATION_LEVEL = "-O";
          

          【讨论】:

            【解决方案12】:

            对我来说,只需清理项目即可使用 ShiftCommandK & OptionShiftCommandK.

            【讨论】:

            • 这并没有解决我的问题,它什么也没做。
            • 是的,这对我也有用 Xcode 10.2.1、iOS 2.3.1、iPhone XS Max。感谢上帝,它不会是大海捞针。在上次编译和出现错误的位置之间,我并没有太大变化。
            • 这个答案相当于 IT,告诉人们尝试将其关闭然后再打开。这当然为我解决了。
            • 哈哈哈老兄,谢谢它对我有用 :) 你太棒了,
            • 哇,这是第三次来这里了..
            【解决方案13】:

            我做了以下事情,它就像魅力一样:

            • 打开 Xcode 首选项(Command,
            • 转到Locations 标签
            • 单击显示Derived Data 的URL 路径的灰色小箭头
            • Finder 窗口将打开并显示以下文件夹:

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

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

            【讨论】:

            • 这并没有解决我的问题,它什么也没做。
            • 尝试了很多,但这是唯一有效的解决方案
            【解决方案14】:

            我也遇到了同样的问题,我按照@cdeerinck 的建议做了,得到了下面的link,它建议在 Build Settings 中添加一个用户定义的变量来禁用批处理模式,即添加一个名为 SWIFT_ENABLE_BATCH_MODE 的新用户定义变量并将其设置为 NO,我能够更深入地了解该问题,并且我知道错误出现在使用 strong>CommonCrypto 被添加到它(由我),但由于 Xcode 10 它作为 Swift 的一部分本地公开(仅适用于 Apple 平台),并添加它(或它的存在来自以前的版本)导致名称冲突,因此引发错误。要了解更多信息,请参阅this link,它更详细地解释了该问题。

            【讨论】:

              【解决方案15】:

              从 Xcode 10 开始随机得到这个。我认为当我在构建开始时更改代码中的某些内容时会发生这种情况。 下一个构建每次都有效。

              【讨论】:

                【解决方案16】:

                解决方法如下: - 去构建设置 - 搜索 SWIFT_COMPILATION_MODE - 如果这是发布配置的“整个模块”,则将其更改为“增量”。 - 立即存档。

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

                【讨论】:

                  【解决方案17】:

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

                  简而言之,转到您的项目构建设置,并添加一个名为 SWIFT_ENABLE_BATCH_MODE 的用户定义设置并将其值设置为 NO。

                  之前,我尝试了其他地方建议的以下每种方法(重建、退出 Xcode、清理和重建、清除派生数据文件)。他们都没有工作。

                  一旦我按照文章添加了用户定义构建设置,Swift 就会告诉我真正的错误。在我的例子中,它是一个缺失的 },但它可能是任何数量的问题。

                  【讨论】:

                  • 这并没有解决我的问题,它什么也没做。
                  • 但是,我收到了这个错误消息:Command PrecompileSwiftBridgingHeader failed with a nonzero exit code
                  • 我没有工作,又遇到同样的错误。
                  • 这对我有用;揭示了潜在的错误。
                  【解决方案18】:

                  让我分享一下我解决此问题的经验。

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

                  注意:如果您使用任何扩展程序,请从目标中删除该扩展程序的 info.plist。

                  希望对你有帮助。

                  【讨论】:

                  • 这并没有解决我的问题,它什么也没做。
                  【解决方案19】:

                  我的是名称间距问题。我有两个同名的文件。只是将它们重命名并解决了。

                  在寻找其他地方之前,总是要先检查“愚蠢的我”框。 :)

                  【讨论】:

                    【解决方案20】:

                    我遇到了这个问题,将项目的编译模式设置从增量更改为整个模块为我解决了这个问题。

                    【讨论】:

                    • 这帮助我解决了问题。当我打开整个模块模式时,它开始向我报告实际错误,而不是一般的高级故障。全部修复后,如果您愿意,您可以将其改回增量。
                    • 任何提示在哪里可以找到此设置?我查看了我的目标的构建设置和项目的构建设置,但找不到它(通过搜索它)可能是因为我在一个相当旧的 Objective-C 项目上?
                    • 它在 Swift 编译器 -> 代码生成下。或者,有时可能会在用户定义 -> SWIFT_COMPILATION_MODE 下列出
                    • 这并没有解决我的问题,它什么也没做。
                    • 感谢您的提示,它解决了我的问题。我的情况是将项目迁移到 Xcode 10.2 和 Swift 5。我在博客中写了详细的解释:davidchuprogramming.blogspot.com/2019/03/…
                    【解决方案21】:

                    只是添加到这个问题。我的问题与 CommonCrypto 没有任何关系。它创建了一个新的 Single App 应用程序并经过测试可以运行。编译器抱怨使用 Swift 4.2

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

                    【讨论】:

                      【解决方案22】:

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

                      所以":

                      只需在构建设置中删除文件“common crypto”的路径,项目就会像魅力一样构建! :)

                      【讨论】:

                      • 你能澄清一下你的构建设置在哪里吗?是搜索路径吗?
                      • 是的。转到构建设置,选择“全部”选项卡而不是“基本”或“自定义”。现在搜索:“Swift Compiler - Search Paths”如果存在通用加密的路径,请将其删除。
                      【解决方案23】:

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

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

                      如果您没有那个 Pod,也许您可​​以尝试使用您在项目中可能遇到的一些旧 Pod 执行相同的步骤。

                      补充信息:如果你在 Pod 内部有一些代码错误,首先你需要解决那个代码问题,然后尝试重新编译项目。

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

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

                      希望对你有帮助

                      问候。

                      【讨论】:

                      • 不适合我,特别是当我尝试嵌入我之前创建的框架时。
                      • 您是否发现任何其他错误?还是只有 CompileSwift?
                      • 翠鸟吊舱有这个问题,你的方法有帮助,谢谢!
                      • 修复其他代码问题,然后执行这些步骤为我解决了问题
                      • 为什么要这样做?
                      猜你喜欢
                      • 2019-02-20
                      • 2019-02-24
                      • 2019-02-24
                      • 2023-03-14
                      • 2019-06-08
                      • 2020-03-30
                      • 2019-03-01
                      • 2019-05-15
                      • 2019-11-26
                      相关资源
                      最近更新 更多