命令CompileSwift失败,在Xcode 10中退出代码为非零

时间:2018-09-18 13:13:44

标签: ios swift xcode swift4 xcode10

下午好,

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

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

我尝试将广告连播版本和广告连播更新为可用的最新版本,但是问题仍然存在。

我在网络上进行了大量搜索,关于此问题的信息很少。

致谢。

24 个答案:

答案 0 :(得分:29)

当前,我的构建正在运行。 在这里,您可以尝试完成以下步骤:

  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; };

我希望这会有所帮助,

致谢。

答案 1 :(得分:19)

对我来说,清理项目可以使用 Shift 命令 K 选项 Shift 命令 < kbd> K 。

答案 2 :(得分:18)

我遇到了这个问题,将项目的“编译模式”设置从“增量”更改为“整个模块”后,为我修复了该问题。

enter image description here

答案 3 :(得分:10)

您很可能没有阅读完整的错误消息。如果您在“命令CompileSwift失败并返回非零退出代码”消息上方查看,应该找到类似以下的规范:

enter image description here

在此示例中,我有两个名称相同的文件。一旦我修复了它,一切都会按预期进行。

答案 4 :(得分:10)

Clean the application and try to build it again, using ShiftOptionCommandK then CommandB.

答案 5 :(得分:8)

我的问题是由于本机Switf CommonCrypto不存在,我使用了一个桥接标头和一个在构建过程中包含了一些魔术的目标。由于CommonCrypto现在是本机的,因此我通过删除目标和#import来解决了该问题,而是在使用它的地方添加了一个导入CommonCrypto。

答案 6 :(得分:7)

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

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

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

一旦我在文章中添加了用户定义的构建设置,Swift就会告诉我真正的错误。就我而言,这是一个缺失的},但可能有许多问题。

答案 7 :(得分:3)

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

答案 8 :(得分:3)

我做了以下事情,它的作用就像魅力:

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

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

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

答案 9 :(得分:3)

让我分享此问题修复的经验。

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

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

希望有帮助。

答案 10 :(得分:3)

我尝试了

  • 关闭并重新打开Xcode
  • 清洁构建文件夹
  • 运行pod install --repo-update

,所有这些仍然无法解决问题。 重启Mac可以达到目的

答案 11 :(得分:2)

这是解决方案:  -转到构建设置  -搜索SWIFT_COMPILATION_MODE  -如果这是用于Release配置的“ Whole Module”,则将其更改为“ Incremental”。  -立即存档。

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

答案 12 :(得分:2)

类重新声明将成为问题。检查重复的类并进行构建。

答案 13 :(得分:2)

我的是一个名字间隔问题。我有两个同名文件。刚刚重命名它们,它解决了。

在查看其他地方之前,请务必先选中“愚蠢的我”框。 :)

答案 14 :(得分:2)

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

答案 15 :(得分:1)

这似乎是一个非常模糊的错误,所以当我遇到这个错误时,我将分享修复它的方法:

使用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

结束

答案 16 :(得分:1)

我也遇到了相同的问题,我按照@cdeerinck的建议进行操作,然后转到以下link,该建议建议将用户定义的变量添加到 Build Settings 以禁用批处理模式,即添加一个名为 SWIFT_ENABLE_BATCH_MODE 的用户定义的新变量,并将其设置为 NO ,我能够对该问题有更多的了解,并且我知道该错误是在框架中使用添加到我的 CommonCrypto ,但由于 Xcode 10 ,它作为Swift的一部分(仅适用于Apple平台)本地公开,并添加(或其以前版本的存在)引起名称冲突,因此引发了错误。要了解更多信息,请参阅this link,其中更详细地说明了该问题。

答案 17 :(得分:1)

错误=命令CompileSwiftSources失败,退出代码非零

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

答案 18 :(得分:1)

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

答案 19 :(得分:1)

我遇到了同样的问题,我的解决方案是在“构建设置”中进行一些更改

SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";

答案 20 :(得分:1)

我从 Xcode 10 开始随机获得了这个。我认为在构建开始时更改代码中的某些内容时会发生这种情况。 每次构建都可以使用下一个版本。

答案 21 :(得分:1)

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

在“构建”设置中将Swift语言更改为版本4.0可以解决此问题。不确定这是否是错误。

答案 22 :(得分:1)

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

所以”:

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

答案 23 :(得分:0)

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