前言
在《Alamofire初探》这篇文章中提到了Swift Package Manager,至于什么是Swift Package Manager以及怎么使用没有详细说明,今天就分享这方面的知识。
什么是Swift Package Manager
Swift Package Manager(简称SPM)是苹果在2018年推出的供Swift开发者进行包管理的工具。类似于我们常使用的Cocoapods或Carthage。
那为什么苹果要推出SPM呢?它又有哪些方面的优势呢?
SPM的优势
1.导入第三方库非常简单。有可视化导入界面,按流程简单操作几步就可以完成导入。
2.定义文件简单。只需将源码放入对应的文件夹内即可,Xcode就会自动生成工程文件,并生成编译目标产物所需要的相关配置。
3.SPM是通过library或workspace方式集成的,侵入性非常低。
4.SPM多平台编译的能力非常好。UIKit一次编写即可适配iOS/iPadOS/tvOS/watchOS多个平台。
5.SPM与Cocapods兼容,可以一起使用。
根据上面说的SPM的优势,何不尝试下?
下面介绍了SPM的优势,简单说下SPM、Cocoapods和Carthage的差异。
SPM、Cocoapods和Carthage差异
注:
SPM在入侵性和编译速度上有明显的优势。
SPM导入第三方库的实战
下面以实际项目方式介绍SPM的导入,具体以导入Alamofire开源库为例。
1.新建TestAlamofire工程,然后选择工程设置->Project->Package Dependcecies,点击+号按钮,进入SPM界面。
注:
进入SPM界面,可以点击xcode的File->Add Package菜单。
2.进入SPM界面后,在右上角的搜索区域,输入Alamofire对应的SPM的地址进行搜索。经过一段时间后,会展示Alamofire信息。修改好对应版本号之后,点击右下角的 Add Pakage。
3.经过一段时间后,Alamofire就导入到工程。
当然也可以在project.pbxproj(TestAlamofire.xcodeproj->显示包内容)文件中查看到Alamofire与工程的依赖关系。
SPM更新第三方库信息
工程使用一段时间后,第三方库有信息变更。如升级了版本之类的,那工程就要同步更新。
SPM的更新第三方库方式也是很简单的。
在Xcode中File->Packages->Update to Latest Package Versions.
介绍完了SPM的使用情况,再介绍下SPM的其他信息。
SPM目录结构说明
总体来说,Swift Package是一个Target对应一个name,而项目根目录/Sources/name 会作为当前Target的工作搜索路径。
name下包含了源代码,资源文件以及导出文件等信息。
Pacakage.swift介绍
Pacakage.swift是一个很重要的三方库的配置文件。它采用的是声明式语法,创建一个Package对象,Package类来自PackageDescription包,其主要作用是对包的描述。而其中主要有name、platforms、products、targets、swiftLanguageVersions这几项信息。
name: 包名
platforms: 支持的平台
products: 编译后的library
targets: 包中包含的targets,其中.testTarget是供测试的
swiftLanguageVersions: 库所对应的版本
除此之外,dependencies参数为库指定依赖的库,SPM会自动加载所有依赖的库。例如在引入Realm时,其依赖于RealmCore。
以上就是SPM所有相关知识点。
小结
1.SPM是苹果推出的优于Cocoapods和Carthage的第三方库管理工具.
2.SPM以可视化,简单步骤为主。
3.SPM的核心在于Pacakage.swift文件,里面是以对象为基础的管理第三方库。
4.掌握和运用SPM,让工作更加简单。