2019-5-18 [macOS 开发] 如何安装和管理第三方库?有哪些包管理工具?
Cocoapods/Carthage/Swift Package Manager
本文写于 2019年5月18日
这篇文章讲什么?
开发 macOS 桌面应用时如何安装和管理第三方库
(也适用于 iOS)
这篇文章对谁有用?
macOS 开发初学者
为什么写这篇文章
我是个新手,从2019年4月份开始学习 macOS 开发。
感觉网上关于 macOS 的文章太少,所以写这篇。
有错欢迎留言指正
介绍
如果读者接触过几门编程语言,会知道它们都有包管理工具。
比如
开发 macOS 应用使想用第三方包,有如下三种选择
根据如下2篇文章
- Carthage or CocoaPods: That is the question (Medium 点赞 740) (英文)
- Carthage Tutorial: Getting Started - raywenderlich (英文)
重点如下
-
Swift Package Mangaer 虽然是官方推出的,但截止至2019年5月18日尚未成熟,很多应用还是只能通过 Cocoapods 和 Carthage 安装。Github 的 Readme 里甚至有这么一句: "Note that at this time the Package Manager has no support for iOS, watchOS, or tvOS platforms" 翻译过来是:注意目前为止在 iOS, watchOS 或 tvOS 上还无法使用。
-
Cocoapods 年纪最老,使用起来最方便(比 Carthage 方便),缺点是侵入式比较强。
侵入式强的意思是:安装容易,但是想把 Cocoapods 删掉比较难,因为它做了很多修改操作Cocoapods 使用方法:
- 写一个
Podfile
文件 Podfile
文件里写依赖
例子:
- 运行
pod install
命令
注意这一步跑完之后,会出现一个.xcworkspace
后缀文件
以后的开发都要双击这个文件然后在 XCode 里开发。
在用 Cocoapods 之前是双击.xcodeproj
后缀文件然后在 XCode 里开发
- 写一个
-
Carthage 的哲学和 Cocoapods 不一样,侵入性较少,但也导致了用起来麻烦一点,要手工操作
Carthage 使用方法:
- 写一个
Cartfile
文件 Cartfile
文件里写依赖
例子:
- 依据项目类型,
运行carthage update --platform macOS
或carthage update --platform iOS
具体有几种选择可以看帮助命令carthage help update
这条命令会输出:
[--platform (platform)] the platforms to build for (one of 'all', 'macOS', 'iOS', 'watchOS', 'tvOS', or comma-separated values of the formers except for 'all') (ignored if --no-build option is present)
- 把
Carthage/Build
文件夹里的.framework
拖入 XCode 的 "General settings" 的 "Embedded Binaries" 里面
具体参考文档
- 写一个
包管理器讲完了,那么怎么搜第三方库呢?
不管是 npm/pip/gem 它们都有网站可以直接在上面搜。
而 macOS/iOS 这边:
- 在 Cocoapods 搜
- 然后在 Github 里搜 (因为 Carthage 没有一个中心网站)
- 最后在 Google 里搜
结论
-
截止至2019年5月18日本文编写时,可选项只有 Cocoapods 和 Carthage。官方的 Swift Package Manager 尚不成熟。
-
如果想用起来简单,就用 Cocoapods。
缺点是它背后做了很多操作,以后要是想删有些麻烦 -
如果希望干净一些,用 Carthage。
缺点是麻烦了一点,需要做一些手工操作,把 .framework 文件拖入 XCode 里
我个人倾向于使用 Carthage
Cocoapods 和 Carthage 能不能两个一起用?
我没有试过,不过据说是可以的
其他资料
最后
这篇文章其实只是简单总结了下英文资料,没有深入分析,
有需要的读者可以搜 CocoaPods VS Carthage
有一大堆这样的文章
跑个题:不管是 CocoaPods 还是 Carthage,都远远不及 npm 或者 gem 或 pip 的生态繁荣
这个只是个人感觉,暂无统计数据支持,
CocoaPods 网站挺丑的而且上面没写统计数据如下载量,而且库的数量我也觉得少。
我觉得原因是 iOS/macOS 的开发者数量和市场需求都不如 Web 开发。
全文完
感谢阅读