昨天 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 了:juejin.cn/post/739959…