CocoaPods & Carthage,爱恨交加、左右缠绵的 Swift 包管理大戏

2017-08-31 00:24:57 +08:00
 quietjosen

今天又折腾了下 Swift 包管理。

目前是用 CocoaPods,其实也没太大问题,但总觉得 对代码的侵入太强。这不,iPaste for iOS 起了个新项目,想换个清爽点的,于是就又折腾了下。

除了 Pod,主要有 2 个选择:CarthageSwift Package Manager. 后者现在还太嫩,仅适合 Swift 项目,很多第三方并不支持,遂放弃。

那就来到了 Carthage ;其实 Carthage 并不复杂,实质是下载第三方库的源码、本地编译为 Frameworks. 剩下的事情,就要开发者自己手动操作了。其实手动也没什么,就是把 Frameworks 作为 Linked Frameworks 加入项目中,并在编译时复制入 .app.

为什么不用 Embeded 方式呢?因为毕竟第三方库是会变的,如果用 Embeded 相当于写死了版本,后续升级时有些麻烦。当然,也是可行的。

这里就可以看出 Pod 和 Carthage 的二点不同

Carthage 这里有个坑:Swift 编译器版本

sudo xcode-select -s /Applications/Xcode-beta.app/Contents/Developer

carthage update --platform iOS

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Carthage 这么简洁美好,万万没想到,最后还是倒入了 Pod 的怀抱。

因为 Firebase 只支持 Pod 方式集成?!

根本原因是,Firebase 并没有完全开源,部分代码只能用静态库的方式发布。而 Carthage 目前对静态库的支持并不好(虽然网上也有人成功了,但毕竟不是官方支持,有些麻烦,放弃了)

早说嘛,我就不折腾 Carthage 了,何必呢?

另外,还折腾了 iOS 与 macOS 项目间共享代码。因为我不想将二者放在一个工程里,怕同时调试时麻烦,就分为 2 个项目了。现在看来,主要有如下方式集成:

总算,这事有了结论,明天可以静心地优化 iOS 与 macOS 间使用 CloudKit + Core Data 的数据同步了。


博客原文

4176 次点击
所在节点    程序员
5 条回复
LINAICAI
2017-08-31 00:34:33 +08:00
哈哈,早就全部折腾过了,妥妥的继续 cocoapods
66450146
2017-08-31 00:43:44 +08:00
抛弃 CocoaPods 一段时间了

Carthage 配置得当的话方便太多了,非开源的库我们现在就分别管理了

多个 Xcode 版本用 DEVELOPER_DIR 指定就行
quietjosen
2017-08-31 09:11:10 +08:00
@66450146 试试 DEVELOPER_DIR,我就知道自己一定是姿势不对。

Carthage 不能在编码时看第三方源码,这个你怎么解决的,还是忍了?
66450146
2017-08-31 21:58:29 +08:00
@quietjosen 加 --configuration Debug
quietjosen
2017-08-31 23:54:16 +08:00
@66450146 收到,谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/387049

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX