第2章:iOS SDK开发环境搭建(Xcode、Homebrew、依赖管理)
2.1 为什么要认真对待环境搭建?
环境搭建看起来是体力活,但往往是后面所有问题的根源。我最早做密码SDK时,花了两天时间排查一个链接错误,最后发现是Xcode版本和Homebrew装的工具链不匹配。所以这一章,我们一步一步把基础扎稳。
说实话,iOS SDK开发的环境并不复杂,就三个核心组件:Xcode、Homebrew和依赖管理工具。它们之间的关系可以用下面这张图概括:
这张图就是你未来几周工作的骨架。记住,顺序不能乱:先装Xcode,再装Homebrew,最后用Homebrew装依赖管理工具。
2.2 Xcode:绕不过的大家伙
Xcode 是iOS开发的根。它不光是一个编辑器,还绑定了编译器(clang/LLVM)、调试器(LLDB)、模拟器和各种工具链。说白了,你写的所有 Objective-C 和 Swift 代码,最后都靠它变成二进制。
2.2.1 安装与版本选择
去 Mac App Store 搜 Xcode,下载就行。但这里有个坑:你可以同时装多个 Xcode 版本吗?可以,但要注意两点:
- 命令行工具版本:用
xcode-select -p查看当前激活的 Xcode 路径,用xcode-select -s /Applications/Xcode-beta.app切换。 - 模拟器Runtime:多版本 Xcode 共享同一套模拟器镜像,偶尔会冲突。我碰到过一次,iOS 16 的 Runtime 在 Xcode 14.3 和 15.0 之间乱掉,最后只好删掉重装。
sudo xcode-select --switch 并重启终端。
2.2.2 确认安装了 Command Line Tools
Xcode 自带命令行工具,但有时你只装了 Xcode.app,没装 CLI。可以手动触发:
xcode-select --install
如果系统提示「已经安装」,你就用这个命令确认路径:
xcrun --show-sdk-path --sdk iphoneos
# 正常输出类似:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
xcrun 根本找不到 SDK,因为他的 Xcode 是从别处拷来的,没有跑过 sudo xcodebuild -runFirstLaunch。装了 Xcode 后,一定打开一次 Xcode.app 同意协议、完成组件安装。
2.3 Homebrew:macOS 缺少的包管理器
Homebrew 是 macOS 上的瑞士军刀。你装 CocoaPods、Carthage、SwiftLint、CMake 等都靠它。没有 Homebrew,手动装这些依赖会让你崩溃。
2.3.1 安装 Homebrew
打开终端,一行搞定:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
如果网络慢,可以用国内镜像(比如中科大源):
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew doctor,它会告诉你有没有权限问题或冲突。我以前图省事没跑,结果后来 brew 装东西总报「Permission denied」,查了一圈才发现是 /usr/local 目录权限被改乱了。
2.3.2 常用 Homebrew 操作
| 命令 | 说明 |
|---|---|
brew install <package> |
安装软件包 |
brew uninstall <package> |
卸载 |
brew list |
查看已安装的包 |
brew upgrade <package> |
升级指定包 |
brew update |
更新 Homebrew 自身及 Formula |
brew doctor |
检查环境健康度 |
对于 SDK 开发,我默认会装这些:
brew install cocoapods
brew install swiftlint # 代码风格检查
brew install xcbeautify # 美化编译输出日志
brew install carthage # 如果你用 Carthage
2.4 依赖管理工具:选哪个?
iOS 生态系统里主要有三种依赖管理方式。嗯,其实还有一种叫「手动拖入」,但那是新手才干的。我们直接看对比:
| 特性 | CocoaPods | Carthage | Swift Package Manager |
|---|---|---|---|
| 配置文件 | Podfile (Ruby DSL) | Cartfile (简单文本) | Package.swift (Swift) |
| 编译方式 | 自动生成 workspace / 编译到 Pods/ 目录 | 编译为 Framework,手动拖入 | 集成到 Xcode,自动解析 |
| 二进制分发 | 支持通过 spec 配置 | 需自己打包或第三方服务 | 原生支持 binary target |
| Swift 友好度 | 中等 | 较高 | 最高(官方推荐) |
| 项目规模 | 大型、多平台 | 中大型、模块化 | 中小型、纯 Swift 项目 |
| 生态成熟度 | ★★★★★ | ★★★★ | ★★★★(仍在进化) |
我个人习惯:如果做密码 SDK 需要发布给外部使用,我倾向用 CocoaPods,因为它的 spec repo 最成熟,用户只需要 pod install 就能用。如果只在团队内部测试,我会直接用 SPM——省去 Podfile 的配置成本。
2.5 环境搭建检查清单
每次我开新项目或换 Mac 时,都会过一遍下面这个清单,确保不会漏东西:
- Xcode:最新稳定版 + 运行过一次、同意协议、模拟器能正常启动。
- Command Line Tools:
xcrun -show-sdk-path有输出。 - Homebrew:
brew doctor返回「Your system is ready to brew」。 - CocoaPods:
pod --version能显示版本号。 - Git:Xcode 自带但最好确认
git --version可用。 - 模拟器:至少装一个 iOS 17 的 Runtime (可在 Xcode -> Settings -> Platforms 下载)。
pod install,结果卡在「Setting up CocoaPods master repo」。后来发现是我没装 Xcode 的 Command Line Tools,导致 git 的 credential helper 找不到。解决方法是先装 Xcode 并重启终端,再跑 pod setup。记住,环境变量 $PATH 必须包含 Xcode 的 bin 目录。