Swift 三方库使用方式
Swift 开发中,常用的三方库包管理器主要有三种:
- 官方的包管理器 Apple Swift Package Manager,通常简称为 SPM。
- 第三方的包管理器 Carthage。
- 第三方的包管理器 Cocoapods,其终端命令为
pod。
SPM包管理使用
第一种添加方式
在 Xcode 中,选择 File -> Add Packages...,然后输入远程仓库地址(例如 https://github.com/Alamofire/Alamofire)进行搜索,最后点击 Add Package 完成添加。
第二种添加方式
选中项目,进入 Package Dependencies 选项,点击 + 号,同样会弹出包搜索与添加窗口,后续流程与第一种方式一致。
导包使用
在代码文件中,使用 import 语句导入所需的包,例如:
import Alamofire
struct MyLibsSPM: View {
var body: some View {
Text("Hello, World!")
}
}
SPM使用常见问题
SPM 作为包管理器,在实际使用中可能会遇到一些常见问题:
- 升级到 Xcode 14 后,若找不到 Swift Package 选项,需参考官方文档或相关资源进行调整。
- 有时 SPM 会突然无法正常使用,这通常需要仔细排查项目配置、依赖库之间的冲突或兼容性问题。
- 使用 SPM 下载依赖时若速度缓慢或一直转圈,建议检查网络环境或配置合适的代理。
Carthage包管理使用
安装 Carthage
首先需要安装 Carthage 环境。从其 GitHub 发布页面下载最新版本,双击完成安装。
配置 Cartfile
在项目的根目录下,创建一个名为 Cartfile 的文件。在该文件中,通过简单的语法指定需要集成的第三方库及其版本信息,例如:
github "Alamofire/Alamofire" == 5.9.0
github "SwiftyJSON/SwiftyJSON" == 5.0.0
下载三方库
保存 Cartfile 文件后,打开终端并导航至项目根目录,执行以下命令:
carthage update --platform iOS
命令执行成功后,会在项目根目录下生成一个 Carthage 文件夹,其中包含 Build 和 Checkouts 两个子目录。Build 目录存放编译好的 framework 文件,Checkouts 目录存放签出的库源代码。
接下来,需要在 Xcode 项目中进行配置:
- 在项目的 General 选项卡下,将
Carthage/Build/iOS中的 framework 文件添加到 Linked Frameworks and Libraries。 - 在 Build Phases 中,添加一个 New Run Script Phase,在脚本区域输入:
/usr/local/bin/carthage copy-frameworks - 在 Input Files 中添加所需 framework 的路径,例如:
$(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
配置完成后,在代码中即可通过 import Alamofire 和 import SwiftyJSON 来使用这些库。
注意事项
- 执行
carthage update命令时,建议始终指定--platform iOS参数,以避免默认编译 macOS、tvOS 等多个平台的 framework。 - Cartfile 文件的格式基于 OGDL 标准,支持的数据源类型包括 github、git 和 binary。
Cocoapods包管理
安装 Cocoapods
Cocoapods 可以通过 Ruby gem 或 Homebrew 安装。如果使用 gem 安装,在 macOS 上可能需要根据系统版本调整命令:
# 系统 10.11 之前
sudo gem install cocoapods
# 系统 10.11 之后
sudo gem install -n /usr/local/bin cocoapods
如果安装过程缓慢或失败,可能是由于网络问题,可以尝试将 gem 源更换为国内镜像:
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
安装完成后,执行 pod setup 进行初始化设置。
使用 Cocoapods
在项目根目录下创建一个 Podfile 文件,并指定依赖库。一个完整的示例如下:
platform :ios, '16.0'
target 'MyHello' do
use_frameworks!
pod 'Kingfisher', '~> 7.11.0'
end
保存文件后,在终端执行 pod install 命令安装依赖。如果速度较慢,可以在 Podfile 文件开头添加源地址:
source 'https://github.com/CocoaPods/Specs.git'
安装成功后,会生成一个 .xcworkspace 文件,后续应始终通过此文件打开项目。
注意事项
- 在 Podfile 中使用
use_frameworks!指令,会将依赖库打包为动态框架(.framework 文件)。对于 Swift 项目,通常需要使用此方式,因为 Swift 不支持静态库链接。 - 如果不使用
use_frameworks!,则 Cocoapods 会以静态库(.a 文件)的方式引入依赖。
总结
Carthage 和 Cocoapods 可以在同一个项目中共同使用。对于 Swift 开发,官方的 SPM 包管理器通常是最简单便捷的选择。在实际项目中,可以根据需求灵活搭配,例如推荐同时使用 SPM 和 Cocoapods 进行包管理。