利用pod trunk 发布程序大概分为4步
1. 注册trunk
2. 将本地准备好的框架和.podspec文件提交到github代码仓库,并打上tag标签。
3. 验证podspec文件是否通过
4. 将podspec文件推送到cocoapod trunk 上面
1. 注册trunk
1.1 什么是trunk ?
CocoaPods Trunk是一种身份验证和CocoaPods API服务。要将新的或更新的库发布到CocoaPods以供公开发布,您需要在Trunk注册,并在当前设备上进行有效的Trunk会话。
架构图如下:
1.2 trunk 注册
-
打开终端执行以下命令:
pod trunk register 邮箱 '用户名' --description='电脑描述' -
执行完毕会出现如图信息,给注册的邮箱发了一个邮件,需要自己点击链接确认。这里有个注意点:如果邮箱收件箱没有找到,可以在垃圾箱里面找找看。
-
点击链接之后,会跳转到cocoapod 网页提示注册成功,这个时候可以在终端上查看个人信息执行命令
pod trunk me, 个人信息里面包含Name、邮箱、以及自己上传的所有的Pod
可以看到自己的个人信息之后,就可以开始第2步操作了
2. 将本地准备好的框架和.podspec文件提交到github代码仓库,并打上tag标签。
2.1 首先在github上面创建一个新的仓库如下:
2.2 克隆仓库到本地
2.3 将本地的框架放进仓库文件夹里面
这里注意分两种情况
1.只放框架文件如图:这种方式需要自己创建.podspec文件
2.放框架文件和测试示例工程如图: 这种方式,项目模板会自动生成.podspec文件
- 测试示例工程可以采用pod 创建组件模板的方式生成
终端执行:
pod lib create YCCodeKit
-
将自己的框架代码,放到Classes 文件里面
-
执行
pod install, 示例工程会将本地的框架,导入到项目中,可以本地测试,如图:
推荐这种方式,方便测试功能以及后面的版本升级
2.4 生成框架的.podspec文件并编写里面的内容
- 仓库地址和仓库的代码地址对应下面的图片信息:
- .podpsec 文件的位置如图:
2.5 提交本地代码到仓库并打上tag
-
提交代码到仓库,并打上tag标签如图:我这边用的Sourcetree 工具,用命令也可以。
-
查看代码仓库是否有tag
3.验证podspec文件是否通过
3.1 验证的命令分为本地和远程如下:
-
先验证本地的
pod lib lint YCCodeKit.podspec(从本地验证你的pod能否通过验证) -
再验证本地和远程的
pod spec lint YCCodeKit.podspec(从本地和远程验证你的pod能否通过验证)
提示 xxx passed validation 证明通过了, 都通过了可以执行push操作了
如果报错或者报警告了,可以在命令后面附加信息
--allow-warnings 允许警告
--verbose 输出详细信息
--skip-import-validation 跳过部分验证环节
--use-libraries使用静态库
3.2 常见的验证错误如下:
-
xcodebuild: Returned an unsuccessful exit code. You can use --verbose for more information.
- 可以使用这个命令跳过
pod spec lint YCCodeKit.podspec --skip-import-validation
- 可以使用这个命令跳过
-
代码已经确定没有问题,使用旧版本号打tag,pod spec lint/trunk push失败
- 尝试清除pod缓存
pod cache clean -all清除之后再次验证
- 尝试清除pod缓存
4.将podspec文件推送到cocoapod trunk 上面
-
执行push到trunk:
pod trunk push YCCodeKit.podspec --verbose --allow-warnings -
push成功之后,本地可以验证是否生成,执行
pod trunk me查看个人信息 -
成功之后可以执行
pod search YCCodeKit查看搜索结果 -
问题记录:有的时候确定push成了但本地就是搜索不到,这种情况可以通过下面方法:
-
4.1. 首先确认自己本地索引库是否包含master, 这里必须有这个索引库,如果没有需要去git下载一份
-
4.2. 确保有了master 索引库之后,删除~/Library/Caches/CocoaPods目录下的search_index.json文件 终端输入:
rm ~/Library/Caches/CocoaPods/search_index.json -
4.3 更新本地索引库
pod repo update后再次搜索pod search xxx
5. 最后列一些pod trunk 的一些操作
pod trunk me : 查看个人trunk信息
pod trunk info xxx : 查看指定pod 信息
pod trunk delete xxx versionName : 移除 pod 官方库中的某一个版本
pod trunk deprecate xxx : 放弃整个pod的所有版本