You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Swift Package Manager是否支持iOS?iOS开发包管理器选型咨询

iOS项目包管理器选择建议(Xcode 9 + Swift 4环境)

嗨,我刚好在Xcode 9+Swift 4的环境下折腾过包管理器的选择,给你分享下我的实际经验:

先说说你倾向的Carthage

  • Carthage最大的优势就是低侵入性,它不会修改你的项目结构,也不用生成额外的工作区文件,只需要维护一个Cartfile和自动生成的Cartfile.resolved,对项目的干扰极小
  • 它是按需编译框架,只会把你需要的依赖编译成.framework文件导入项目,相比CocoaPods把所有依赖代码塞进项目的方式,项目会更整洁,编译速度也更可控
  • 在Xcode 9和Swift 4的环境下,Carthage的支持已经很稳定了,主流的iOS第三方库基本都适配了Carthage,踩坑的概率很低

再聊聊你关注的SPM

你看到的文档描述完全没错:

请注意,目前该包管理器不支持iOS、watchOS或tvOS平台。

在Xcode 9这个版本里,SPM确实只能用于macOS和Linux平台,完全没法在iOS项目中做依赖管理。虽然后来苹果在Xcode 11之后把SPM的支持扩展到了移动端,但你现在用的是Xcode 9,所以现阶段SPM对你的iOS项目来说完全不可用,不用考虑用它替代其他工具。

最后说说CocoaPods

  • CocoaPods的生态是最成熟的,几乎找不到不支持它的第三方库,但它的问题也很明显:侵入性极强,会生成*.xcworkspace文件,还会修改你的项目配置,有时候更新依赖或者升级CocoaPods版本会出现各种莫名其妙的编译问题
  • 既然你已经倾向Carthage了,那完全可以优先用它,只要你需要的第三方库都支持Carthage,就没必要再碰CocoaPods;如果遇到少数不支持Carthage的库,再考虑用CocoaPods补充集成,或者手动把库的代码导入项目

总结

现阶段你的最佳选择就是Carthage,SPM在Xcode 9环境下没法用于iOS项目,不用纠结;CocoaPods可以作为备选方案应对特殊情况。

内容的提问来源于stack exchange,提问作者Faustino Gagneten

火山引擎 最新活动