说明
本文介绍采用 trunk 方式上传CocoaPods
trunk需要pod在0.33及以上版本,如果你不满足要求,需要更新pod.
图片是流程图
一:在Github上新建一个repo,上传代码.
不多讲 此篇文章Demo地址
需要注意的一点是:必须跟远程仓库打tag
git tag 0.2.0 -light
解释:创建轻量标签不需要传递参数,直接指定标签名称即可。
git tag -a 0.1.0 -m "xxxxxxxxxxxx"
解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
tag 相关操作
列出当前仓库的所有标签
$ git tag
列出符合模式的标签
$ git tag -l 'v0.1.*'
查看标签版本信息
$ git show v0.1.0
删除本地tag
git tag -d <tagname>
删除远程tag
git push origin --delete tag <tagname>
查看所有远程分支
git branch -a
查看tag
git tag
在某个commit 上打tag
git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233
本地tag推送到线上
git push origin test_tag
本地删除tag
git tag -d test_tag
本地tag删除了,再执行该句,删除线上tag
git push origin :refs/tags/test_tag
切换 分支
git checkout xxxxxxxx
切换标签与切换分支命令相同
$ git checkout [tagname]
解释:切换标签后处于一个空的分支上,即”You are in ‘detached HEAD’ state.”
误打或需要修改标签时,需要先将标签删除,再打新标签
$ git tag -d v0.1.2
解释:参数-d即delete的缩写,意为删除其后指定的标签。
给指定的commit打标签
$ git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6
解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。
将v0.1.0标签提交到git服务器
$ git push origin v0.1.0
解释:通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作。
将本地所有标签一次性提交到git服务器
$ git push origin –tags
git远程仓库的操作
git查看远程仓库地址命令:git remote -v
git移除远程仓库地址: git remote rm origin
git添加远程仓库地址: git remote add origin
git remote add origin https://xxxxxxxxxx.git
git push -u origin master
二 :注册 trunk
pod trunk register yourEmail yourName --verbose
邮箱以及用户名请对号入座。
用户名我使用的是我的邮箱前缀。(一般别人喜欢用GitHub名字)
--verbose参数是为了便于输出注册过程中的调试信息。
执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。
点击邮件的链接就完成了trunk注册流程。使用下面的命令可以向trunk服务器查询自己的注册信息:
pod trunk me
输出如下信息就表示你注册成功,可以进行下面的流程:
三:配置PodSpec文件
需要做两件事情
1、为你的代码添加podspec描述文件;
2、将podspec文件通过trunk推送给CocoaPods服务器
什么是podspec描述文件呢?
简单地讲就是让CocoaPods搜索引擎知道你的代码的作者、版本号、源代码地址、依赖库等信息的文件。任何支持CocoaPods的开源代码都必须有podspec文件。
官方配置文件说明地址
Pod::Spec.new do |s|
s.name = "LearnCocoaPods"
s.version = "0.0.1"
s.summary = "UIBarButtonItem extension"
s.description = "UIBarButtonItem extension Learn CocoaPods"
s.homepage = "https://github.com/zhangxueyang/LearnCocoaPods"
s.license = "MIT"
s.author = { "cocoazxy" => "cocoazxy@gmail.com" }
s.platform = :ios, "5.0"
s.source = { :git => "https://github.com/zhangxueyang/LearnCocoaPods.git", :tag => "#{s.version}" }
s.source_files = "Classes", "Classes/**/*.{h,m}"
s.requires_arc = true
end
podspec文件中有很多参数,但并不是每一个都能用上,我写的这个podspec文件中的参数基本上够用了。这个文件使用ruby语言写的,所以如果有ruby语言的功底看这个代码应该很熟悉,当然没有也没关系,因为理解起来实在太简单了。
下面还是挨个对每个参数介绍下:
1.name :pod的名字,应该与你的工程名保持一致
2.version: 版本号,你以为是你工程的版本号,那你就大错特错了,我在这个地方坑了好久。后来才知道这个version是和你的branch名称保持一致的,如果你的branch名字叫做1.0.0,那这个version就可以要写成1.0.0,当更新版本的时候,要重新建立一个branch命名为1.0.1,然后version也要写成1.0.1。
3.summary:一句话介绍你的pod
4.homepage:pod的url地址
5.license:你的pod所遵守的开源协议、 一般都是‘MIT’
6.author: 作者名,联系方式
7.platform:pod所支持平台和最小系统版本
8.ios.deployment_target:同上
9.source:pod的地址和tag
10.source_files:pod在工程中的所在目录,如果有多个不同的目录,则写成这种形式 :’floder1…’,’floder2….’,’….’
11.requires_arc:是否是ARC。
3.1---添加podspec描述文件
pod trunk push LearnCocoaPods.podspec --allow-warnings
pod trunk push xxxxxxxxxx.podspec(换成你自己的podspec文件名字)
3.2--- 等待上传成功就好
在上传的过程工作了三件事
1、验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod lib lint”命令进行验证。
2、上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)
3、将你上传的podspec文件转成json格式文件
执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,现在CocoaPods审核只需要几秒钟或者几分钟就可以完成了。
看到这个 说明成功了
--------------------------------------------------------------------------------
🎉 Congrats
🚀 LearnCocoaPods (0.0.1) successfully published
📅 April 4th, 08:54
🌎 https://cocoapods.org/pods/LearnCocoaPods
👍 Tell your friends!
--------------------------------------------------------------------------------
3.3--- 搜索看能不能找到我们的库文件
先用"pod search"查找一下你的代码,有结果的话就欢天喜地;没有的话执行"pod setup"进行本地依赖库更新,再search。
pod setup 更新慢的解决办法
因为在 pod setup 更新过程中:
Cocoapods在将https://github.com/CocoaPods/Specs的信息下载到你电脑的~/.cocoapods
目录下并进行文件比对,总数据大小大约在100MB左右,再加上服务器在国外,因此速度会比较慢。
在执行过程中你也可以新开一个Terminal窗口,cd到~/.cocoapods目录,用du -sh *
来查看下载进度。
解决办法就是替换镜像文件
先用这个命令查看软件源
gem sources -l
如果是 https://rubygems.org/
或者是 https://ruby.taobao.org/
就需要先移除掉
gem sources --remove https://rubygems.org/
gem sources --remove https://ruby.taobao.org/
gem sources --remove https://gems.ruby-china.org/
淘宝镜像已经不提供更新
换成这个
gem sources --add https://gems.ruby-china.com/
在进行pod setup 就会快很多
error: RPC failed
error: RPC failed
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: early EOF
报错原因:
git缓存区不足
解决方案
修改Git的传输字节限制即可。
git config --global http.postBuffer 524288000
建议看下这篇文章 用CocoaPods做iOS程序的依赖管理
关于文章中的 淘宝镜像源 应该是作者好久没更新文章 所以还是淘宝的, 在上边已经说明,需要特别注意.
说下遇到的坑
1搜索不出来结果
Unable to find a pod with name, author, summary, or descriptionmatching 'xxxxxxx'。
解决办法:
删除~/Library/Caches/CocoaPods目录下的search_index.json文件
pod setup成功后会生成~/Library/Caches/CocoaPods/search_index.json文件。
终端输入rm ~/Library/Caches/CocoaPods/search_index.json
删除成功后再执行pod search
podspec文件更新方法
执行pod trunk push操作后发现podspec文件的某个地方写错了,想更新一下。
对于这种情况,我们可能会先尝试着在把podspec文件push一次。但是如果你的代码版本号没变(podspec里的version自然也没变)就会提示push失败,即使你更改了podspec的其他地方,pod也会认为这两个文件是同一个。
更新源代码版本号(如:1.1.1->1.1.2)
重新push version tag,然后再执行pod trunk push操作。
上边是直接提交了文件夹上去 接下来是提交带有demo的文件
参考下边文章就好了
使用Cocoapods创建私有podspec,带有DEMO
这个排版比较好点
更新版本的错误处理,一般是忘记改 版本号 或者 忘记在spec 文件没有改 version