美文网首页
封装自己的库到CocoaPods (Trunk),以及podsp

封装自己的库到CocoaPods (Trunk),以及podsp

作者: 因为太有钱 | 来源:发表于2018-04-04 23:48 被阅读32次

说明

本文介绍采用 trunk 方式上传CocoaPods
trunk需要pod在0.33及以上版本,如果你不满足要求,需要更新pod.

CocoaPods官方博客

图片是流程图


image

一:在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

输出如下信息就表示你注册成功,可以进行下面的流程:


Snip20180404_2.png

三:配置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

相关文章

网友评论

      本文标题:封装自己的库到CocoaPods (Trunk),以及podsp

      本文链接:https://www.haomeiwen.com/subject/fqclhftx.html