Swift 三方库使用指南:SPM、Carthage与Cocoapods详解

Viewed 0

Swift 三方库使用方式

Swift 开发中,常用的三方库包管理器主要有三种:

  1. 官方的包管理器 Apple Swift Package Manager,通常简称为 SPM。
  2. 第三方的包管理器 Carthage。
  3. 第三方的包管理器 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 文件夹,其中包含 BuildCheckouts 两个子目录。Build 目录存放编译好的 framework 文件,Checkouts 目录存放签出的库源代码。

接下来,需要在 Xcode 项目中进行配置:

  1. 在项目的 General 选项卡下,将 Carthage/Build/iOS 中的 framework 文件添加到 Linked Frameworks and Libraries。
  2. 在 Build Phases 中,添加一个 New Run Script Phase,在脚本区域输入:
    /usr/local/bin/carthage copy-frameworks
    
  3. 在 Input Files 中添加所需 framework 的路径,例如:
    $(SRCROOT)/Carthage/Build/iOS/SwiftyJSON.framework
    $(SRCROOT)/Carthage/Build/iOS/Alamofire.framework
    

配置完成后,在代码中即可通过 import Alamofireimport 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 进行包管理。

0 Answers