但是我使用相同的Xcode重新编译了框架,它仍然给我这个错误。
我希望有人知道
更新:
对于Xcode的发布版本:
当使用Xcode 9.1,9.2,9.3,9.4,10等打开使用早期Xcode工具构建的框架的项目时,将发生此错误(以及涉及Swift 4.1,4.2等的类似错误)。
要解决此问题,请使用Carthage(carthage update --platform iOS
),Cocoapods(pod update
或pod install
)或使用新更新的Xcode工具手动更新和重建框架。更新Xcode时应自动更新这些工具,但如果没有,您可以按照原始答案中列出的步骤进行操作。
您可能还需要清理项目cmd + shift + k
以及可能的构建文件夹cmd + option + shift + k
,以使Xcode不使用缓存框架构建。
在某些情况下,您可能还需要删除派生数据文件夹(通过转到Xcode首选项 - >位置 - >派生数据文件夹(Thanks Stunner)轻松找到
对于Xcode的beta版本:
请参阅以下原始答案,然后按照上述步骤操作
原答案:
您可能仍然将xcodebuild工具设置为使用Swift 4.0构建的Xcode 9.0,并且与Xcode 9.1 beta的Swift 4.0.1不兼容。
使用以下命令检入终端:
xcodebuild -version
或者只是进入Xcode首选项 - >位置并检查/更改命令行工具到Xcode 9.1。你应该设置。
我的问题是由于没有为Swift 4.0.2编译外部框架。我通过Carthage添加了这个文件,所以运行:
carthage update --platform iOS
然后清理项目cmd + shift + k
和构建文件夹cmd + option + shift + k
并删除派生数据文件夹(只是将其移动到垃圾工作)为我工作。
安装从here为您工作的特定Xcode版本的Xcode工具链。
Xcode工具链包括编译器,lldb和其他相关工具的副本,这些工具为在特定版本的Swift中工作提供了一致的开发体验。
打开Xcode的Preferences,导航到Components> Toolchains,然后选择已安装的Swift工具链。
这将让你现在编译和运行应用程序。
我用Xcode 10 beta来解决这个问题,它增加了Swift 4.2。我的问题与迦太基或任何外部依赖无关。
转到YourTarget > Build Settings > Swift Language Version
获取所有Xcode目标。
我的都被设置为Swift 4
。
添加复制文件构建阶段后,我开始收到错误
:0:错误:使用Swift 4.1.2编译的模块无法通过Swift 4.2编译器导入:/Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
命令MergeSwiftModule失败,出现非零退出代码
然后我将每个目标的Swift Language Version
设置为Swift 4.2
,从而消除了错误。
我不确定为什么错误首先发生,因为将所有目标设置为Swift 4
应该同样有效。
就我而言(Xcode 9.2):
我去了Xcode Preferences > Locations > Derived Data
然后我删除了数据,并做了一个干净的构建,没关系。