boycgit / swiftui-knowledge

收集和 swiftui 相关的知识点
MIT License
2 stars 0 forks source link

【基础系列】学习 Swift Package Manager #4

Open boycgit opened 4 years ago

boycgit commented 4 years ago

Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。该工具可以直接帮助我们编译和链接 Swift packages(包),管理依赖关系、版本控制,以及支持灵活的代码分发和团队协作。

boycgit commented 4 years ago

参考文档

boycgit commented 4 years ago

A. 视频讲解

视频地址

B. 文字讲解

Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易。

经过本次课的学习,你将获得:

  1. 相当于看完官方教程文章(https://swift.org/package-manager/
  2. 了解包管理相关知识,理解 Module、Package、Product 等概念
  3. 理解 Swift PM 组织管理代码模块的规范标准
  4. 如何本地 开发/调试 所依赖的第三方包

1、官方案例

官方案例中,以 “Dealer”(发牌员) 作为案例讲解包管理的机制,其各 Modules 之间的依赖关系如下:

image

2、SwiftPM 中的概念理解

其实 SwiftPM 和其他编程体系中的包管理器(比如 maven、 npm)理念相同,是语言生态成熟的一个体现。概念:

  1. Modules(模块): 代码功能模块
  2. Packages(包):辅以描述文件,方便分发管理 Modules
  3. Products(生成结果):library | executable

为方便理解,以生活中的 “快递书籍” 作为类比,Modules 就是我们想要快递的 书籍,这是我们真正有价值的物件,而 Package 则是快递公司提供的 快递包装盒,上面粘贴有快递单号和联系人信息,这样就能将你的书籍按照快递规则从 A 发往 B 那儿了。

3、如何创建一个 Package(具体见视频)

  1. 通过菜单添加 “Swift Package”
  2. 在 Package.swift 中声明依赖库的关系
  3. 引用依赖库,写代码就完了

4、如何本地调试依赖(具体见视频)

  1. 拖入依赖包到 Xcode
  2. 调试依赖代码
  3. 打 tag + push git

C. 关于 “Swift笔记”

Swift笔记”专栏,隶属于 JSCON 专栏系列,以我自学 Swift 过程中,将个人认为不错的知识以简短视频方式呈现,通常是一些精简的教程、开发提效方法等,每则笔记约 5 ~ 10 分钟就能读完;

如何获取往期 Swift 笔记?可在微信内搜索 “JSCON简时空”或 “iJSCON” 关注,在公众号内回“swift-note” 即可获取。

boycgit commented 4 years ago

【附】使用命令行执行 swift 命令

先看一下效果:

$ git clone https://github.com/apple/example-package-dealer.git
$ cd example-package-dealer
$ swift run Dealer

image

执行完这条语句后,会在 ./.build/debug 目录下生成一个名为 Dealer的可执行程序。 image

而所依赖的库的内容在目录下的 ./build/checkouts 中查阅: image

Q&A

Q1:执行 swift run Dealer 会报错 "xcrun: error: unable to find utility "xctest", not a developer tool or in PATH" image

A: 可以参考 issue: terminated(72): xcrun --sdk macosx --find xctest 的这个解决方法,在命令行中运行:sudo xcode-select -s /Applications/Xcode.app/Contents/Developer 即可