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 `../`)`