Ios Swift 5.1编译器无法导入使用Swift 5.0.1编译的模块

Ios Swift 5.1编译器无法导入使用Swift 5.0.1编译的模块,ios,swift,xcode11,Ios,Swift,Xcode11,我有一个VoiceSampler.framework,它是用Xcode 10.3构建的 我正试图在一个新项目中使用Xcode11中的框架。我已成功添加了该框架,但当我在AppDelegate中编写import VoiceSample时,出现以下错误: Swift 5.1编译器无法导入使用Swift 5.0.1编译的模块:/Users/apple/Projects/CaptureAppSwift/VoiceSampler.framework/Modules/VoiceSampler.swiftmo

我有一个VoiceSampler.framework,它是用Xcode 10.3构建的

我正试图在一个新项目中使用Xcode11中的框架。我已成功添加了该框架,但当我在AppDelegate中编写
import VoiceSample
时,出现以下错误:

Swift 5.1编译器无法导入使用Swift 5.0.1编译的模块:/Users/apple/Projects/CaptureAppSwift/VoiceSampler.framework/Modules/VoiceSampler.swiftmodule/arm64.swiftmodule

我可以在Xcode 11中调整构建设置以使其正常工作吗?
任何其他解决方法?

此问题是由于您试图嵌入使用不同编译器版本创建的预编译框架而导致的

目前,只有在编译器版本匹配的情况下才能嵌入预编译框架!用于编译项目的swift编译器版本必须与用于编译框架的版本相同

希望在将来的Swift/编译器版本中删除此限制。。。 有关更多信息,请参阅此处的“模块稳定性”一章:


正如其中一条评论中已经提到的,这个问题的解决方案是升级或降级到适当的Xcode版本。(或者,如果可能,使用所需的编译器版本重新编译框架,然后在项目中使用相同的编译器版本。)

在我的情况下,问题将出现在迦太基。因此,我在Finder中从项目的根文件夹中删除了以下文件:

Cartfile.resolved, 迦太基/

然后启动了
迦太基引导程序--平台iOS
(因为我不需要更新迦太基)


但是如果你需要更新迦太基,你就不需要删除文件了。只有write命令
carthage update--platform iOS
解决了这个问题。

我在Sqlite.swift上遇到了类似的问题。执行以下命令对我有效:

carthage update --platform iOS --no-use-binaries

这是建议的。

正如我已经描述的,VoiceSample的提供者应该用
BUILD\u LIBRARY\u FOR\u DISTRIBUTION=YES重建框架。在这种情况下,您将能够在所有Swift版本中使用VoiceSample。

只需在框架的构建设置中将构建分发库选项设置为

您需要在框架的构建设置中将构建分发库选项设置为是,否则,swift编译器不会生成必要的.swiftinterface文件,这些文件是未来编译器能够加载旧库的关键

这在project.pbxproj文件中以以下形式结束:


设置此标志后,我使用Xcode 11.0(swift 5.1)编译的框架可以使用Xcode 11.2(swift 5.1.2)编译,并且一切都正常工作。

以下命令解决了编译器错误

  • carthage引导程序--平台ios
  • brew捆绑包
  • pod回购更新

  • 如果您使用React Native构建应用程序,请转到Xcode并单击
    文件
    ->
    工作区设置…
    ->如果您注意到DerivedData文件夹的路径有一个小箭头,请单击该箭头,实际文件夹将与其他iOS相关文件夹一起出现,删除
    DerivedData
    文件夹并重建应用程序。现在一切都会顺利的。。。稍后谢谢

    什么是VoiceSampler.framework?如果是Carthage,则必须更新Carthage.VoiceSample.framework,它是另一个开发人员提供的用于MP3音高/频率采样的库。我在Xcode 10.3中的项目中使用了这个库,没有任何问题。迦太基是什么?我该如何/在哪里更新迦太基?问题在于Xcode 11支持swift 5.1,您的框架是用swift 5.0.1编写的,为了解决这个问题,请将Xcode版本降级到10.3或获取VoiceSample.framework的最新版本。我已在5.1中重新编译SDK并上传了它,但当我通过cocoapods安装SDK时,它又回到了5.0.1。有没有办法解决这个问题?从2020年4月开始,如果你降低Xcode的等级,那么应用程序将不会被提交。如果您将
    YES
    设置为
    buildlibrariesfordistribution
    ,则会出现大量其他错误。那么有什么解决办法吗?所有东西都由迦太基运送的假设是无效的。不幸的是,一些提供商通过邮件或在网页上下载fat二进制文件来提供他们的框架。在我打开
    buildlibrariesfordistribution
    开关后,重复回答,然后它给了我另一种类型的错误,那就是
    :0:error:不支持使用模块接口的桥接头
    @zionpi您有什么解决方案吗?我也面临着挑战same@AnkitGoyal这是我的两分钱。如果您的项目引用了导致此类问题的
    第三方库
    ,请要求
    第三方库
    提供商提供正确的版本,或者降低您的XCode版本以匹配第三方库的
    swift版本。这应该是可接受的答案。公认的答案给出了笼统的概括,而不是精确的解决方案。
    BUILD_LIBRARY_FOR_DISTRIBUTION = YES;