Swift 5.0编译器无法导入使用Swift 4.2.1编译的模块

时间:2019-03-26 08:47:25

标签: ios swift paytm

我正在尝试根据指令https://github.com/Paytm-Payments/Paytm_iOS_App_Kit/tree/master/Swift/BitCodeDisabled/PaytmNativeSDK

将第三方应用集成到项目中

我在构建中看到以下错误

  

使用Swift 4.2.1编译的模块不能被Swift 5.0导入   编译器

我已经尝试过工具链https://medium.com/xcblog/switching-swift-versions-inside-xcode-using-toolchains-755b28831c43 错误更改为原因:库版本不兼容:PaytmNativeSDK需要版本1.0.0或更高版本,但libswiftCore.dylib提供版本0.0.0

如何设置XCode或库以使其工作。供应商没有机会为Swift 5.0更新该库并使其在POD上可用。

8 个答案:

答案 0 :(得分:8)

对于迦太基用户::升级到Xcode 10.2后,我遇到了我以前使用迦太基导入的相同问题。

我通过重建框架来解决它:

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

答案 1 :(得分:4)

正确的解决方案是下载Xcode 10.1,然后等待Apple补丁程序修复错误。

不要在修复第三方错误上浪费时间。


我的项目的问题是我们正在使用Alamofire,但迦太基无法对其进行更新。

答案 2 :(得分:2)

我想使用Swift 4.2(Xcode 10.2仍应支持,我已经在Swift语言版本中对其进行了设置),但是它仍然给我关于Swift 5.0编译器的错误。因此,在尝试清除了诸如构建文件夹,派生数据之类的所有内容之后,我得出的结论是它不适用于Xcode 10.2。

我恢复到Xcode 10.1,可以下载here。这可行。因此,在Apple修复此错误之前,我不得不继续使用Xcode 10.1。

答案 3 :(得分:1)

如果您的项目中仍然有使用4.2编译器构建的外部库,而新的Xcode会尝试在5.0编译器中构建项目,则会发生这种情况。

就我而言,我很少使用Carthage导入库。幸运的是,过去几天,我使用的库已经发布了更新,使其与Swift 5.0编译器兼容。如果那些外部库尚未对其进行更新以支持Swift 5.0,那么您可能暂时不走运。

在途中,您可能仍然会遇到一些问题,下面是一些避免其他问题的最佳做法。

  1. 完全删除cartfile.resolved和Carthage文件夹
  2. 确保您删除了先前添加到项目中的库的任何副本。
  3. 从Targets> Yourapp> General中删除嵌入式库以及链接的框架和库。
  4. 产品>清理构建文件夹
  5. 更新购物车文件并使用“迦太基”更新命令获取新资源
  6. 现在将库导入到您的项目中。

希望它能起作用。

答案 4 :(得分:1)

框架的开发人员需要提供一个更新,该更新内置于Xcode 10.2中。

针对框架开发人员的说明:
即使您使用Xcode 10.2或CI使用的默认版本创建了框架,您的用户仍可能会遇到这样的错误。您应该确保Xcode 10.2是您的默认命令行工具。您可以使用命令xcodebuild -version在终端中对其进行检查。 可以在Xcode -> Preferences -> Locations -> Command Line Tools中调整默认版本。

答案 5 :(得分:0)

我的迦太基问题与xcode阶段有关,该阶段将二进制文件复制到 “迦太基复制框架”阶段。

对于https://stackoverflow.com/a/55362536/721929中评论的解决方案,我有一个稍微不同的解决方案,因为该解决方案在某些情况下还会更新依赖项版本。

因此,我刚刚执行了“迦太基构建”。我还为Carthage提供了一个缓存清理工具,以修复子任务中可能出现的错误(在我的情况下, git clone带有“退出代码1” 失败)

rm -rf ~/Library/Caches/org.carthage.CarthageKit
carthage build --no-use-binaries --platform iOS --verbose

答案 6 :(得分:0)

此库的提供者应使用BUILD_LIBRARY_FOR_DISTRIBUTION = YES;(在 Build Settings-> Build Options 中的Xcode 11.3中提供)进行重建。已经要求这样做in the corresponding GitHub issue。之后, PaytmNativeSDK 将与每个下一个Swift版本兼容。

答案 7 :(得分:0)

只需删除所有* .framework文件夹,获取并生成,然后将新的Framework文件夹导入到您的项目即可。 那就是帮助我的原因。

例如: