说实在话,类似的教程网上很多,基本可以满足大多数人零基础发布 CocoaPods,但是其中可能会遇到一些问题,只有亲自尝试过才知道。

准备工作

1. clone 远程仓库到本地

git clone 你的仓库链接

2. 注册 trunk

注册的命令

pod trunk register 你的邮箱 你的用户名

记得去邮箱里验证,然后可以输入以下命令查看个人信息

pod trunk me

步骤

1. 创建 .podspec

pod spec create AXKit

2. 修改 .podspec 并验证

有很多类似的教程,可以参考。

一个小技巧:你可以去GItHub搜索一些热门的第三方库,然后点击查看这些大牛的 .podspec 是怎么写的。
传送门:YYKit的podspecReactiveObjC的podspecBlocksKit的podspec

最容易出错的地方就是资源路径

s.source_files = "AXKit/**/*.{h,m}"

常见写法

"Directory1/*"  表示匹配所有文件
"Directory1/Directory2/*.{h,m}" 表示匹配所有以.h和.m结尾的文件
"Directory1/**/*.h" 表示匹配所有子目录

s.source 常见写法

# 推荐写法:与版本号绑定
s.source = { :git => "https://github.com/TeaseTian/HTQRCode.git", :tag => "#{s.version}" }
# 与commit id 绑定
s.source = { :git => "https://github.com/TeaseTian/HTQRCode.git", :commit => "68defea" }

tag => s.version 表示将这个 Pod 版本与 Git 仓库中相同版本的 comit 绑定

注意

如果仓库中对应的tag是 “v1.0.0” 这样以字母开头的,可以在 #{s.version} 前面加上对应的字母。commit => "68defea" 表示将这个 Pod 版本与 Git 仓库中某个 commit 绑定

验证

pod spec lint AXKit.podspec

3. 上传到远程仓库

修改 .podspec 时指定的版本号,如 0.0.1。那么远程仓库中必须始终存在这个版本的 branchtag 才能够下载。建议使用 tag。s.source 中的 tag 需要与远程仓库中的 tag 对应起来。

s.version = "0.0.1"
s.source = { :git => "https://github.com/xaoxuu/AXKit.git", :tag => "v#{s.version}" }

这里指向的是 "v0.0.1" 这个分支,因为分支我们用完之后习惯把它删掉,所以这里也可以指向 tag,也就是说打一个 "v0.0.1" 的 tag 并推送到远程就可以了。

git tag v0.0.1
git push --tags

这样做的好处就是删掉当前分支不影响 CocoaPods 中指向的仓库源码。

4. 发布到 CocoaPods

pod trunk push AXKit.podspec

n. 删除一个 podspec 版本

删除的命令是:

pod trunk delete 项目名 版本号

官方建议使用 deprecate 来弃用

pod trunk deprecate 项目名

这两种方法执行完有很大几率会出现一串很长很长的错误,不要着急,这实际上这是一个 html。把它保存到一个 html 文件中,打开,是个404错误页,原因众所周知。

删除之后立即搜索还是能搜到的,因为有一定的延迟,可能要半个小时才能更新。

pod trunk 命令

在终端输入

pod trunk --help

可以查看帮助

使用脚本

没必要每次都重复每个步骤,如果你已经发布过一个,可以省去注册的步骤,直接把已经发不过的 podspec 复制一份,改一下仓库模块名,验证通过就可以发布了。

我写了一个便于发布更新的脚本,把脚本放在与 podspec 同级目录下,当你更新了项目之后,如果需要更新到 cocoapods,可以执行此脚本。流程是:

输入版本号 -> commit、push tag -> pod spec lint -> 询问是否发布(y/n) -> 发布(y)

评论