命令CompileSwift在Xcode 10中以非零退出代码失败[重复]

问题描述 投票:71回答:24

这个问题在这里已有答案:

下午好,

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

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

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

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

问候。

ios swift xcode swift4 xcode10
24个回答
31
投票

目前我的构建正在运行。在这里,你是我尝试的步骤,直到它最终起作用:

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

我希望这可以帮助,

问候。


3
投票

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

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

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

希望能帮助到你。


3
投票

我做了以下工作,它像魅力一样:

  • 打开Xcode首选项(命令)
  • 转到Locations选项卡
  • 单击显示Derived Data的URL路径的小灰色箭头
  • Finder窗口将打开并显示以下文件夹: DerivedData Archives iOS DeviceSupport UserData DocumentationCache iOS Device Logs
  • 退出Xcode
  • 删除DerivedData文件夹(它只包含以前版本的缓存)
  • 重启Xcode

3
投票

运行pod install --repo-update并关闭并重新打开x-code修复了我的所有有此错误的pod的问题。


2
投票

我的名字间距问题。我有两个同名的文件。刚重命名它们就解决了。

在寻找其他地方之前,总是先检查一下'愚蠢的我'框。 :)


2
投票

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


2
投票

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


1
投票

我搜索了整个网络,但我找不到任何解决这个问题的方法。我设法删除部分中的“Common Crypto”路径:Build设置中的IMPORT路径。问题似乎是“共同加密”现在存在于ios 12 sdk的基础中。

所以”:

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


1
投票

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

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


1
投票

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


1
投票

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


26
投票

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


1
投票

我有同样的问题,我的解决方案是在Build Settings中改变一点

SWIFT_COMPILATION_MODE = singlefile;
SWIFT_OPTIMIZATION_LEVEL = "-O";

1
投票

ERROR =命令CompileSwiftSources失败并返回非零退出代码

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


1
投票

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


1
投票

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

使用Xcode 10.1和Swift 4.2我在这里尝试了很多所有的建议,但没有一个对我有用,然后我意识到我使用的依赖与Swift 4.2不兼容,这导致我在其他pod上得到这个错误。所以要修复它我只需要强制该pod使用Swift 4.0,将它放在我的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

0
投票

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


20
投票

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

enter image description here


14
投票

您很可能没有阅读整个错误消息。如果你看上面的“Command CompileSwift失败并带有非零退出代码”消息,你应该找到一些这样的规范:

enter image description here

在这个例子中,我有两个同名的文件。一旦我修好了,一切都按原样运作。


10
投票

清理应用程序并尝试使用ShiftOptionCommandK然后使用CommandB再次构建它。


10
投票

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


8
投票

这是Swift 4.2和Xcode 10的一个已知问题。我在这里发现了一篇针对我的文章:https://github.com/Yummypets/YPImagePicker/issues/236

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

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

一旦我根据文章添加了用户定义构建设置,Swift就告诉我真正的错误。在我的情况下,它是一个缺失},但它可能是任何数量的问题。


8
投票

我试过了

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

而且所有这些仍然无法解决问题。

重启Mac就行了!


5
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.