用途
本技能是一份将 CocoaPods 库发布到官方 CocoaPods Trunk 的完整指南,适用于需要把自研 iOS/macOS 库对外发布、供他人通过 CocoaPods 安装的场景。
发布流程概览
资料给出的流程步骤为:
- 注册 CocoaPods Trunk(一次性)
- 准备 podspec
- 本地校验(pod lib lint)
- 发布前校验(pod spec lint)
- 在 git 中打版本标签
- 推送到 Trunk(pod trunk push)
Trunk 注册
一次性注册邮箱:
pod trunk register email@example.com 'Your Name'
随后需在邮箱中点击验证链接激活账号。可用以下命令检查注册状态:
pod trunk me
示例输出包含 Name、Email、Since、Pods 等字段。
Podspec 准备
版本管理方面,采用语义化版本 MAJOR.MINOR.PATCH,且 spec.source 中的 tag 必须与 git 标签一致:
Pod::Spec.new do |spec|
spec.version = '1.0.0'
spec.source = {
:git => 'https://github.com/username/MyLibrary.git',
:tag => spec.version.to_s
}
end
必需元数据包括:name、version、summary、description、homepage、source、license、authors,以及平台部署目标(如 spec.ios.deployment_target = '13.0')。
校验
本地快速校验(跳过构建):
pod lib lint --quick
完整校验(含构建):
pod lib lint
pod lib lint --swift-version=5.9
pod lib lint --verbose
发布前校验:
pod spec lint
该命令会针对远程仓库进行校验,模拟真实安装环境。资料建议修复警告而非使用 --allow-warnings。
发布前检查清单
资料列出的检查项包括:所有测试通过、无 lint 警告、包含隐私清单(iOS 17+)、README 完整、存在 LICENSE 文件、CHANGELOG 已更新、版本号正确、Git 仓库干净。
Git 打标签
git add .
git commit -m "Release version 1.0.0"
git tag 1.0.0
git push origin main --tags
标签格式支持语义化版本、预发布(1.0.0-beta.1)和候选版本(1.0.0-rc.1),且必须与 podspec 中的 spec.version 一致。
发布到 Trunk
pod trunk push MyLibrary.podspec
pod trunk push MyLibrary.podspec --swift-version=5.9
成功后会输出发布确认信息,并给出 cocoapods.org 上的 Pod 页面链接。
版本更新
- 补丁版本(Bug 修复):1.0.0 → 1.0.1
- 次要版本(新功能):1.0.1 → 1.1.0
- 主要版本(破坏性变更):1.1.0 → 2.0.0
每次均需更新 podspec 版本、提交、打标签、推送标签,再执行 pod trunk push。
多 Pod 管理
查看已发布 Pod:
pod trunk me
添加/移除协作者:
pod trunk add-owner MyLibrary email@example.com
pod trunk remove-owner MyLibrary email@example.com
弃用版本或整个 Pod:
pod trunk deprecate MyLibrary --version=1.0.0
pod trunk deprecate MyLibrary
也可在 podspec 中设置 spec.deprecated = true 与 spec.deprecated_in_favor_of。
常见问题
- 标签不匹配:报错 “The repo has no tag for version 1.0.0”,需创建并推送对应标签。
- 校验失败:报错 “xcodebuild: Returned an unsuccessful exit code”,可用 pod lib lint --verbose 查看详情并修复。
- 缺少 license:报错 “Missing required attribute
license”,需在 podspec 中添加 license 并在仓库根目录创建 LICENSE 文件。
最佳实践与反模式
最佳实践包括:在示例应用和真实项目中测试、严格遵循语义化版本、维护 CHANGELOG 与 README。反模式包括:未测试就发布、初次发布使用 --allow-warnings、忘记打 git 标签、跳过版本号递增。
限制
资料未提供该技能的具体运行环境、依赖版本要求、收费或价格信息,也未说明其与相关技能(cocoapods-podspec-fundamentals、cocoapods-subspecs-organization、cocoapods-test-specs、cocoapods-privacy-manifests)之间的具体调用关系。