前言
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' => 'grh_1990@126.com'} # 作者 => 邮箱
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
出现如下表示验证通过
这里可能会遇到一些警告或者错误,错误按照相应的提示进行修改即可。警告可以在发布的时候进行忽略。
6. 发布到cocoapods
在终端输入如下命令发布到cocoapods
。
pod trunk push RHKit.podspec
如果在验证的时候有警告,不需要修改的话,在发布时候需要添加忽略警告,写法如下:
pod trunk push RHKit.podspec --allow-warnings
显示如下表示上传发布成功
7. 更新库版本
- 对相应的库进行修改之后提交到
GitHub
; - 增加新的
tag
值; - 修改
.podspec
文件中版本号; - 验证
- 发布
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
及部分常见错误。
如果有什么问题,我们可以一起交流讨论解决。
最后,希望可以帮助到有需要的码友。