Carthage for Swift:完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

📦 Carthage for Swift:去中心化依赖管理器

\n\n

Carthage 是一个面向 Apple 生态系统(iOS、macOS、tvOS、watchOS)的去中心化依赖管理器。与 CocoaPods 不同,Carthage 不会自动修改项目——它会构建框架,而您需要手动将它们连接到 Xcode。这为您提供了对构建过程的完全控制,并且几乎没有“魔法”。

\n\n

该库使用 Carthage(名称与工具本身相同)并通过 Cartfile 工作——这是一个声明式文件,用于列出依赖项。Carthage 会克隆仓库,构建它们(使用 xcodebuild),并将生成的 .framework 文件放入 Carthage/Build 文件夹。您需要手动将它们添加到项目中。

\n\n

为什么需要 Carthage?如果您重视透明度、希望避免版本冲突,并且不喜欢工具自动修改您的项目,那么 Carthage 是理想选择。它非常适合那些每个成员自行决定如何连接依赖项的团队,以及具有严格构建安全要求的项目。

\n\n
\n\n

1. 安装 Carthage

\n\n

您可以通过 Homebrew(推荐)安装 Carthage,或者从 GitHub 下载 .pkg 文件。

\n\n
\n 精确安装命令(macOS):\n
\n\n
# 通过 Homebrew 安装\nbrew install carthage\n\n# 检查版本\ncarthage version
\n\n

如果尚未安装 Homebrew,请先安装它:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

\n\n

Linux 或 Windows 官方不支持 Carthage(仅限 macOS)。

\n\n
\n\n

2. 快速入门——最小工作示例

\n\n

创建一个新的 Xcode 项目(例如 Single View App)。然后在项目根目录下创建一个名为 Cartfile(无扩展名)的文件,并添加依赖项:

\n\n
# Cartfile\ngithub "Alamofire/Alamofire" ~> 5.8
\n\n

现在,在终端中(从项目文件夹)执行以下命令:

\n\n
carthage update --platform iOS
\n\n

完成后,在 Carthage/Build/iOS 文件夹中会出现 Alamofire.framework。打开 Xcode,将此 .framework 文件拖放到目标(target)的 Frameworks, Libraries, and Embedded Content 部分。选择“Embed & Sign”。

\n\n

现在可以导入该库:

\n\n
import Alamofire\n\n// 最小请求示例\nAF.request("https://api.github.com/users/defunkt").response { response in\n    debugPrint(response)\n}
\n\n

完成!您刚刚通过 Carthage 连接了一个依赖项。

\n\n
\n\n

3. Carthage 的主要方法和功能

\n\n

以下是 Carthage 的关键命令和功能。大多数命令在终端中调用。

\n\n
\n

🔹 1. carthage update

\n

签名 carthage update [--platform PLATFORM] [--configuration CONFIG] [--no-build] [--use-xcframeworks]

\n

功能: 下载并构建 Cartfile.resolved 中的所有依赖项(如果 Cartfile.resolved 不存在,则更新到最新版本)。创建 Carthage/Build 文件夹。

\n
# 仅针对 iOS 更新,使用 xcframeworks\ncarthage update --platform iOS --use-xcframeworks
\n
\n\n
\n

🔹 2. carthage bootstrap

\n

签名 carthage bootstrap [--platform PLATFORM] [--configuration CONFIG] [--use-xcframeworks]

\n

功能: 使用现有的 Cartfile.resolved 构建依赖项(不更新版本)。非常适合 CI/CD——确保构建的可重复性。

\n
# 重新构建所有内容,如                    

推荐