SuperAPI AI 工具集

cocoapods-publishing-workflow

编程与开发

查看项目

更新于 10-16 04:05

技能介绍

用途

本技能是一份将 CocoaPods 库发布到官方 CocoaPods Trunk 的完整指南,适用于需要把自研 iOS/macOS 库对外发布、供他人通过 CocoaPods 安装的场景。

发布流程概览

资料给出的流程步骤为:

  1. 注册 CocoaPods Trunk(一次性)
  2. 准备 podspec
  3. 本地校验(pod lib lint)
  4. 发布前校验(pod spec lint)
  5. 在 git 中打版本标签
  6. 推送到 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)之间的具体调用关系。