本文写于 2019年5月18日

这篇文章讲什么?

开发 macOS 桌面应用时如何安装和管理第三方库
(也适用于 iOS)

这篇文章对谁有用?

macOS 开发初学者

为什么写这篇文章

我是个新手,从2019年4月份开始学习 macOS 开发。
感觉网上关于 macOS 的文章太少,所以写这篇。
有错欢迎留言指正

介绍

如果读者接触过几门编程语言,会知道它们都有包管理工具。
比如

  • Node.js 有 npm
  • Python 有 pip
  • Ruby 有 gem

开发 macOS 应用使想用第三方包,有如下三种选择

  1. Swift Package Mangaer
  2. Cocoapods
  3. Carthage

根据如下2篇文章

重点如下

  1. 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 上还无法使用。

  2. Cocoapods 年纪最老,使用起来最方便(比 Carthage 方便),缺点是侵入式比较强。
    侵入式强的意思是:安装容易,但是想把 Cocoapods 删掉比较难,因为它做了很多修改操作

    Cocoapods 使用方法:

    1. 写一个 Podfile 文件
    2. Podfile 文件里写依赖
      例子:
      8E404554-56E7-4E19-A410-B42404C7FE67
    3. 运行 pod install 命令
      注意这一步跑完之后,会出现一个 .xcworkspace 后缀文件
      以后的开发都要双击这个文件然后在 XCode 里开发。
      在用 Cocoapods 之前是双击 .xcodeproj 后缀文件然后在 XCode 里开发
  3. Carthage 的哲学和 Cocoapods 不一样,侵入性较少,但也导致了用起来麻烦一点,要手工操作

    Carthage 使用方法:

    1. 写一个 Cartfile 文件
    2. Cartfile 文件里写依赖
      例子:
      cartfile
    3. 依据项目类型,
      运行 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)
    
    1. Carthage/Build 文件夹里的 .framework 拖入 XCode 的 "General settings" 的 "Embedded Binaries" 里面
      具体参考文档

包管理器讲完了,那么怎么搜第三方库呢?

不管是 npm/pip/gem 它们都有网站可以直接在上面搜。

而 macOS/iOS 这边:

  1. 在 Cocoapods 搜
  2. 然后在 Github 里搜 (因为 Carthage 没有一个中心网站)
  3. 最后在 Google 里搜

结论

  1. 截止至2019年5月18日本文编写时,可选项只有 Cocoapods 和 Carthage。官方的 Swift Package Manager 尚不成熟。

  2. 如果想用起来简单,就用 Cocoapods。
    缺点是它背后做了很多操作,以后要是想删有些麻烦

  3. 如果希望干净一些,用 Carthage。
    缺点是麻烦了一点,需要做一些手工操作,把 .framework 文件拖入 XCode 里

我个人倾向于使用 Carthage

Cocoapods 和 Carthage 能不能两个一起用?

我没有试过,不过据说是可以的

其他资料

最后

这篇文章其实只是简单总结了下英文资料,没有深入分析,
有需要的读者可以搜 CocoaPods VS Carthage 有一大堆这样的文章

跑个题:不管是 CocoaPods 还是 Carthage,都远远不及 npm 或者 gem 或 pip 的生态繁荣

这个只是个人感觉,暂无统计数据支持,
CocoaPods 网站挺丑的而且上面没写统计数据如下载量,而且库的数量我也觉得少。
我觉得原因是 iOS/macOS 的开发者数量和市场需求都不如 Web 开发。

全文完

感谢阅读