前段时间看到了 @猫爪 的一片文章,讲了个人如何上传自己的私有库,供别人使用。按照他的教程,期间碰到了许多问题,这里做个笔记,供像我一样的纯新手使用。
@猫爪 【最新】上传代码到cocoapod ,自己的框架提供给开发者使用
@zhiyi 特别感谢这位热心的大神耐心的解答我的小白问题
1. git上创建一个新的repository
这时你的git上就新建了一个空的工程,下面需要将工程clone
到本地。
2.添加代码
将库文件与使用Demo,添加到第一步clone
下来的空的工程中去。
然后用git客户端将代码上传到git
3.打Tag,首先要cd进入clone
下来的工程主目录
- 本地tag。
// 打tag,注意,这里的tag打在本地,还没有push到git的origin
git tag 0.0.1 -m 'update'
-
push
到origin
,这一步狠重要,否则后面会报错
// 将Tag,Push到origin
git push origin --tags
4.podspec文件
- 创建。路径还是与第3步一样。在
clone
下来的主目录下。
// 创建podspec文件
pod spec create JWTrace
- 编辑文件内容
Pod::Spec.new do |s|
// 名称
s.name = "JWTrace"
// 版本
s.version = "0.0.3"
// 描述
s.summary = "日志打印控制器"
// 主页
s.homepage = "https://github.com/junwangInChina/JWTrace"
// 证书申明
#s.license = "MIT"
s.license = { :type => 'MIT', :file => 'LICENSE' }
// 作者
s.author = { "xxx" => "xxx@xxx.com" }
// 支持版本
s.platform = :ios, "8.0"
// 版本地址
s.source = { :git => "https://github.com/junwangInChina/JWTrace.git", :tag => "0.0.3" }
// 库文件路径(相对于.podspec文件的路径)
s.source_files = "JWTraceDemo/JWTrace/**/*.{h,m}"
// 是否支持arc
s.requires_arc = true
end
需要注意的是s.source_files
路径不要搞错。
- 校验文件
// 校验文件
pod spec lint ./JWTrace.podspec
注意这一步,我在这里卡了很久,因为校验老是不通过,但是又没有错误信息。[!] The spec did not pass validation, due to 2 errors and 1 warning.
只有类似这种错。
这里建议使用帮助命令
// 查看帮助命令
pod --help
// 把校验命令修改为
pod spec lint ./JWTrace.podspec --verbose
上面的错误说找不到分支,这就是第3步里的
tag
没有push
到origin
导致的。将打好的tag,push到git上去之后,再校验。
// 再校验
pod spec lint ./JWTrace.podspec --verbose
注意看最后面
- 提交
.podspec
文件到git
可能遇到的错误1
// 提交到git服务器,无警告时
pod trunk push ./JWTrace.podspec
如果你是第一次提交,可能会出现You need to register a session first
错误
就是要注册session的意思
参考1
参考2
// 第一次push到git时,需要注册session
pod trunk register xxx@xxx.com 'name' --description='macbook air'
可能遇到的错误2
// 提交到git服务器
pod trunk push ./JWTrace.podspec
提交成功示例
// 提交到git服务器,忽略警告
pod trunk push ./JWTrace.podspec --allow-warnings
可能遇到的问题3
网上说是因为pod缓存的问题,要删掉本地的
master
重新pod setup
rm -fr ~/.cocoapods/repos/master
pod setup
我的处理方式是升级cocapods版本
// 默认升级到最新版本
gem install cocoapods
// 再更新本地repo
pod repo update --verbose
此时
cocoapods
已经准备好了,再提交
pod trunk push ./JWCounter.podspec --allow-warnings
可能遇到的问题4
这个问题一般在上一步,校验
podspec
文件时,就会出现因为你的破的文件没有指明是用于什么系统
// 加上这个就行了
s.platform = :ios, '7.0'
可能遇到的问题5
这个问题的出现场景与解决方案与上一个问题基本一样,都是在
podspec
文件里缺少指明
// 加上这个
s.frameworks = 'UIKit'
可能遇到的问题6
因为你没有更新本地库啊
方法一:
终端输入命令pod repo update 更新仓库,在执行search命令。
方法二:
删除~/Library/Caches/CocoaPods目录下的search_index.json文件
pod setup成功后会生成~/Library/Caches/CocoaPods/search_index.json文件。
终端输入rm ~/Library/Caches/CocoaPods/search_index.json
删除成功后再执行pod setup(会重新生成search_index.json文件的)
方法三:
git clone https://github.com/CocoaPods/Specs.git ~/.cocoapods/repos/master
pod cache clean --all
rm -rf ~/Library/Caches/CocoaPods
pod repo update
-
pod search
最后就是校验自己的成果了。
// 利用pod,查询自己提交的库
pod search JWTrace