发布自己的开源库到Cocoapods及部分常见错误

image.png

前言

iOS开发中,我们会经常用到cocoapods来添加依赖库,有时候可能也会自己封装一些好用的库,可以发布到cocoapods分享给各位码友使用。本文将详细讲解如何发布自己的开源库到cocoapods及可能遇到的错误解决方案。

发布开源库到cocoapods

1. 注册cocoapods

如果没有账号的话,需要先注册cocoapods,非常简单。

打开终端输入如下命令:

pod trunk register 邮箱 '名字(起个名字)'  --verbose

然后邮箱中会受到一封确认邮件,点击邮件中的链接即完成注册。

接下来在终端中可以查看自己的注册信息,命令如下:

pod trunk me

可以看到如下的注册信息:

  - Name:     name                      // 注册时的名字
  - Email:    email                     // 注册时的邮箱地址
  - Since:    January 3rd, 2018 04:26   // 注册时间
  - Pods:                               // 发布成功的开源库
    
  - Sessions:                           // session信息包含有效期和IP 
    - June 17th, 21:50 - October 24th, 08:11. IP: 123.66.66.66

2. 上传封装好的库到GitHub

将封装好的开源库上传到GitHub,并打上tag标签

git tag '1.0'
git push --tags

3. 创建 .podspec文件

在本地仓库中创建.podspec文件,终端cd到要发布的库的本地仓库输入如下命令:

pod spec create RHKit

这里的RHKit是你要发布的库的名称,写成自己的即可。
此时在本地仓库会出现一个RHKit.podspec的文件。

4. 修改 .podspec 文件

为了避免出错过多,可以去GitHub上下载比较成熟的三方库的.podspec文件,然后将内容复制粘贴进自己创建的里边然后进行修改。

以下是我的一个库的.podspec文件内容,仅供参考:

Pod::Spec.new do |s|

  s.name         = 'RHKit'    # 库名称
  s.version      = '1.2.8'    # 版本号,与push到GitHub的tag号一致
  s.summary      = 'iOS常用组件'   # 库的描述信息
  s.homepage     = 'https://github.com/guorenhao/RHKit'  # 库在GitHub上的地址
  s.license      = 'MIT'   # 固定
  s.authors      = {'Abner_G' => '[email protected]'}  # 作者 => 邮箱
  s.platform     = :ios, '8.0'    # iOS版本最低限制
  s.source       = {:git => 'https://github.com/guorenhao/RHKit.git', :tag => s.version}     # 前部分是库在GitHub上的地址  后边意思是tag与库version一致
  s.source_files = 'RHKit/**/*.{h,m}'  # 路径
  s.frameworks   = 'UIKit', 'Foundation' # 依赖框架
  s.requires_arc = true   # arc

end

5. 验证 .podspec 文件

在终端输入如下命令进行验证。

pod spec lint RHKit.podspec

出现如下表示验证通过

image.png

这里可能会遇到一些警告或者错误,错误按照相应的提示进行修改即可。警告可以在发布的时候进行忽略。

6. 发布到cocoapods

在终端输入如下命令发布到cocoapods

pod trunk push RHKit.podspec

如果在验证的时候有警告,不需要修改的话,在发布时候需要添加忽略警告,写法如下:

pod trunk push RHKit.podspec --allow-warnings

显示如下表示上传发布成功

image.png

7. 更新库版本

  1. 对相应的库进行修改之后提交到GitHub
  2. 增加新的tag值;
  3. 修改 .podspec 文件中版本号;
  4. 验证
  5. 发布

Cocoapods部分常见问题错误

1、问题:发布或更新后搜索不到。
解决:在终端输入如下命令。

pod setup

更新之后再进行搜索。

如果还搜索不到,在搜索时添加 --simple,如下:

pod search RHKit --simple

还可以删除~/Library/Caches/CocoaPods目录下的search_index.json文件
终端输入如下命令:

rm ~/Library/Caches/CocoaPods/search_index.json

再执行pod search 会生成新的~/Library/Caches/CocoaPods/search_index.json文件。

一般情况下上边的解决方案就可以解决了,如果还解决不了,随便找个工程,将刚发布的库添加进去指定版本号,然后执行pod install,执行完之后再pod search就出来了。

2、报错:
[!] Couldn't determine repo type for URL: https://cdn.cocoapods.org/: execution expired
解决:终端执行如下命令

pod repo remove master

完成之后继续之前操作即可。

3、报错:
[!] Authentication token is invalid or unverified. Either verify it with the email that was sent or register a new session.
解决:终端输入如下命令

pod trunk register '邮箱' '名字'

会得到如下回复:

[!] Please verify the session by clicking the link in the verification email that has been sent to 邮箱

去邮箱打开链接验证即可继续执行之前操作。

4、报错:
[!] Failed to connect to GitHub to update the CocoaPods/Specs specs repo - Please check if you are offline, or that GitHub is down
解决:设置 —> 网络偏好设置 —> 高级 —> DNS —> 添加8.8.8.8
添加该代理后,图片加载或者某些网址加载可能会比较慢,所以在使用之后可以移除。

5、报错:
[!] Unable to add a source with url https://cdn.cocoapods.org/ named trunk. You can try adding it manually in /Users/hao/.cocoapods/repos or via pod repo add.

解决:在cocoapods的本地仓库repos中复制粘贴一份master更名为trunk再进行之前操作。

6、报错:
Updating spec repo trunk [!] CDN: trunk URL couldn't be downloaded: https://cdn.cocoapods.org/deprecated_podspecs.txt Response: Timeout was reached
解决:将cocoapods的本地仓库repos中除了trunk之外的所有文件夹及文件删除或移除再进行之前操作。

7、发布报错:
[!] The spec did not pass validation, due to 1 warning (but you can use --allow-warnings to ignore it).
解决:将--allow-warnings加上即可,如下:

pod trunk push RHKit.podspec --allow-warnings

8、报错:
[!] CDN: trunk Repo update failed或者
[!] CDN: trunk URL couldn't be downloaded:
解决:在podfile文件中指定source源,如下:

source 'https://github.com/CocoaPods/Specs.git'

总结

以上就是关于如何发布自己的开源库到Cocoapods及部分常见错误。

如果有什么问题,我们可以一起交流讨论解决。

最后,希望可以帮助到有需要的码友。

版权声明:
作者:主机优惠
链接:https://www.techfm.club/p/48760.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>