昨天 CocoaPods 官宣现在项目**处于维护模式 **,简单来说,就是 CocoaPods 不会再像以前一样积极投入资源进行开发,这里的维护模式,就是让项目处于「可用」的状态,而此时距离 CocoaPods 的出现,也过去了有 13 年的历史。
其实在不久之前,我就发布过《Flutter 正在迁移到 Swift Package Manager ,未来会弃用 CocoaPods 吗?》 的相关内容,当时其实就提到过,Flutter 已经在全面将 iOS 的包管理工具迁移到 SwiftPM ,而未来很大概率也会弃用 CocoaPods。
恰好不久前的《Flutter 3.24 更新》就增加了对 Swift Package Manager 的早期支持,这对于 Flutter 来说,好处就是:
- Flutter 的 Plugin 可以更贴近 Swift 生态
- 简化 Flutter 安装环境,Xcode 本身就是包含 Swift Package Manager,如果 Flutter 的项目使用 Swift Package Manager,则完全无需安装 Ruby 和 CocoaPods 等环境
而对于 React Native ,其实去年就有相关 react-native-community#587 讨论,而因为 SwiftPM 还不支持混编的原因,React Native 在 SwiftPM 的推进上还很慢,另外也有人给 CocoaPods 提了 PR#743,希望通过在 CocoaPods 增加 SwiftPM_dependency
的做法来让 CocoaPods 支持 SwiftPM ,不过按照目前CocoaPods 进入维护模式的情况来看,支持的可能性很渺茫。
其实为什么在这里提到 Flutter 和 React Native ?因为它们对于 CocoaPods 来说是很重要的增长来源。
CocoaPods 表示,其实从 2015年 Apple 宣布 Swift Package Manager 项目之后,CocoaPods 就已经被 Apple 给 Sherlocked ,从而打击到了 CocoaPods 项目开发的积极性,但是好在 React Native 和 Flutter 的流行,也在一定程度确保了 CocoaPods 在 most metrics of usage/traffic 指标上还是一直在稳步上升。
但是随着时间的流逝 ,用户都在慢慢转向 SwiftPM,而 CocoaPods 现在已经转变成:只有存在一些外部原因导致无法工作时才会才更新的进度,例如安全问题、 Xcode 的重大更改等情况。
所以 CocoaPods 此次官宣进入维护模式,主要是明确了:
- 不再积极关注 GitHub 问题
- 不会积极开发 CocoaPods 新功
- 不会保证 bug 和 pr 的进度
不过 CocoaPods 依然会保证核心的安全性和可用性,目标大概是每年至少发布 2 个版本,以保持与 Xcode 更新同步。
另外,未来可能会将 Specs Repo 转换为只读来大大简化 CocoaPods trunk 的安全性 ,只要 GitHub 和 jsDelivr 继续存在,像 Specs repo 和 CDN 这样的场景仍然可以运行,这可以让现有版本保持正常工作,官方表示:
至少对于像 React Native 这样的项目来说,这样的调整应该没问题,因为它们的大部分库都是通过 npm 而不是 Trunk 来的,至于 Flutter 的生态系统是如何工作的他也不清楚。
所以目前看来 Flutter 迁移到 Swift Package Manager 并弃用 CocoaPods 应该也只是时间问题 。
未来 CocoaPods 将通过提供 Trunk 被禁用的日期, 来通知大家 Specs 仓库设置为只读的时间。
这难免让人想起 2021年 Android 上 Bintray 关闭 JCenter 的时候
所以 CocoaPods 也表示,不管是 Unity 还是 React Native 和 Flutter ,随着时间的推移,这些项目也都将迁移到 Swift Package Manager,这是大趋势,谁也不能阻挡。
所以,从今天开始,或者你真应该了解下什么是 Swift Package Manager 了:https://blog.csdn.net/ZuoYueLiang/article/details/140943669?spm=1001.2014.3001.5501