pod install 后 iOS 通用框架编译器版本发生变化

Posted

技术标签:

【中文标题】pod install 后 iOS 通用框架编译器版本发生变化【英文标题】:iOS universal framework compiler version changes after pod install 【发布时间】:2019-11-05 08:45:39 【问题描述】:

我遇到了 ios 通用框架的问题(封闭源代码)。

创建通用框架时,它显示 * Generated by Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9) * 如果将框架添加到项目中,它可以正常工作

但是在将它上传到 git 并使用 pod 安装后,我收到一个错误 Swift 5.1.2 编译器无法导入使用 Swift 5.0.1 编译的模块

当我检查头文件时,我看到 // 由 Apple Swift 5.0.1 版生成 (swiftlang-1001.0.82.4 clang-1001.0.46.5)

我理解的问题是在上传我的编译器时 Swift 版本 5.1.2,这是正确的,但是在 pod install 之后它以某种方式更改为 Swift 5.0.1 版

为什么会改变?以及如何确保它不会改变?

podspec

Pod::Spec.new do |s|
s.platform = :ios, '11.0'
s.name = "xyz"
s.version = '1.0.5'
s.summary = 'xyz - Binaries'
s.description = 'Framework for xyz'
s.homepage = 'https://github.com/xyz/xyz'
s.license =  :type => 'MIT' 
s.author = 'https://github.com/Albinzr'
s.requires_arc = true
s.swift_version = '5.1'
s.source =  :http => 'https://github.com/xyz/SDK/blob/master/xyz.framework.zip?raw=true' 
s.ios.deployment_target = '11.0'
s.ios.vendored_frameworks = 'xyz.framework'
end

【问题讨论】:

不应该是5.1而不是5.0吗? s.swift_version = '5.0' @SavcaMarin 我也试过了,但仍然是同样的问题 【参考方案1】:

您看到这个问题是因为该框架是为与 Xcode 11.0(使用 Swift 5.0)一起分发而构建的。你使用 Xcode 11.2 在本地构建它,它更新了 Swift 5.1.2。 Swift 5.1.2 与 5.0 不兼容,但似乎即将发布的 Swift 版本将与 5.0 兼容。因为他们终于在 5.1.2 中引入了Swift Module stability。

确保 CI/CD(或其他分发系统)运行最新的 Xcode。

并确保使用 pod install --repo-update 安装 pod。默认情况下,Cocoapods 不会更新 repo(因为历史上,在他们引入 CDN 之前,这个过程曾经很慢)

希望对你有帮助!

【讨论】:

仍然出现这个问题 @Albi 如何为 CocoaPods 发行版构建框架?【参考方案2】:

从 CocoaPod 1.7 及更高版本开始,它更改为 spec.swift_versions = ['3.2', '4.0', '4.2']。查看http://blog.cocoapods.org/CocoaPods-1.7.0-beta/

【讨论】:

以上是关于pod install 后 iOS 通用框架编译器版本发生变化的主要内容,如果未能解决你的问题,请参考以下文章

Flutter ios pod install 更改部署目标

CocoaPods 1.0之前版本无法pod install和pod update! 更新后CocoaPods 1.1.1 Podfile新的写法.

pod install 失败并出现错误:在 iOS 中安装 pod 时 `Podfile` 需要 Library (from `../`)`

iOS-pod install&pod update

iOS开发中的错误整理,pod文件Install失败

如何修复 pod install 错误 glog 太旧或缺少在 Windows 10 中反应原生 ios