iOS 如何让自己的框架支持cocoapod

1,484 阅读4分钟

利用pod trunk 发布程序大概分为4步

1. 注册trunk
2. 将本地准备好的框架和.podspec文件提交到github代码仓库,并打上tag标签。
3. 验证podspec文件是否通过
4. 将podspec文件推送到cocoapod trunk 上面

1. 注册trunk

1.1 什么是trunk ?

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 常见的验证错误如下:

  1. xcodebuild: Returned an unsuccessful exit code. You can use --verbose for more information.

    • 可以使用这个命令跳过 pod spec lint YCCodeKit.podspec --skip-import-validation
  2. 代码已经确定没有问题,使用旧版本号打tag,pod spec lint/trunk push失败

    • 尝试清除pod缓存 pod cache clean -all 清除之后再次验证

4.将podspec文件推送到cocoapod trunk 上面

  1. 执行push到trunk: pod trunk push YCCodeKit.podspec --verbose --allow-warnings

  2. push成功之后,本地可以验证是否生成,执行pod trunk me 查看个人信息

  3. 成功之后可以执行pod search YCCodeKit 查看搜索结果

  4. 问题记录:有的时候确定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的所有版本