CocoaPods,创建属于自己的公开库

前言

   在项目的开发过程中我们经常会使用到很多的第三方框架,通过CocoaPods我们可以非常容易的去管理这些第三方库,至于CocoaPods如何使用,这不是我们今天讨论的重点,这里我就不再赘述了,不太明白的小伙伴们可以参考这篇文章:用CocoaPods做iOS程序的依赖管理

   今天我们讨论的重点是如何将属于我们自己写的组件或者是库开源出去,用户通过一句  pod install  就可以集成我们写的框架呢? 不着急,下面我将带领大家一步步的将属于自己的pods发布到CocoaPods中,下面我就简单的以一个小Demo来做演示

工作原理

从网上看到一张特别好的图 这里就直接拿过来用了

工作原理


一.上传项目到代码托管平台

   首先我们需要在第三方代码托管平台上创建一个属于我们自己的Repository,假如名称为GZPCode,创建好之后将我们的库上传到github上,并且打上tag,这个非常重要。将tag push到github上之后我们就可以在release 文件中看到一个0.1.0的版本了,注意这里一定要先将我们的库commit 之后在打tag,否则的话会出问题


二.注册trunk

如果不知道我们曾经有没有注册过trunk,那么可以使用下面的命令向trunk服务器查询自己的注册信息:

pod trunk me

否则我们可以通过下面的命令去注册trunk:

pod trunk register zswangzp@163.com 'gzp'  --verbose

大家在注册的时候需要将邮箱和用户名替换成自己的即可,--verbose参数是为了便于输出在注册过程中的调试信息。执行上面的语句后,你的邮箱将会受到一封带有验证链接的邮件,如果没有请去垃圾箱找找,有可能被屏蔽了。点击邮件的链接就完成了trunk注册流程。

点击邮箱中的链接则会跳转到下图所示的界面,表明已经注册成功了

三.配置PodSpec,并且推送到CocoaPods服务器

1、添加podspec描述文件

首先在我们框架的同级目录下创建一个名称为 GZPCode 的PodSpec的文件,代码如下

pod spec create GZPCode

至于pod spec文件,它是用来描述我们的框架的一些具体信息的,比如框架的作者、版本、下载地址等信息。我们在 pod install  安装第三方框架的时候就是根据这个文件中的下载地址去Clone 具体代码的。通过上面这个命令我们就创建了一个GZPCode.podspec 文件,用XCode 打开这个文件 我们可以看到它里面有非常多的信息,这里我们讲解几个必要的:

Pod::Spec.new do |s|

s.name         = "GZPCode"  #项目名称

s.version      = "0.1.0"    #项目版本

s.summary      = "GZPCode. 框架的简单描述" #框架的简单描述

s.description  = <<-DESC

框架的具体描述,这里的信息要长一些不然会报错的。。。。。。。。。。

DESC

s.homepage     = "https://github.com/Guanzhangpeng/GZPCode" #该框架在github上的主页地址

s.license      = "MIT"   #协议

s.author             = { "gzp" => "zswangzp@163.com" }  #作者

s.platform     = :ios, "8.0"  #最低适配的版本

s.source       = { :git => "https://github.com/Guanzhangpeng/GZPCode.git", :tag => "#{s.version}" } #源代码的具体地址

s.source_files  = "Classes", "Category/**/*.{h,m}" #框架相对于spec文件的路径

s.exclude_files = "Classes/Exclude"

s.requires_arc = true     #支持arc

end

2、将podspec文件通过trunk推送给CocoaPods服务器

相信上面的注释已经写的很详细了,编辑完podspec文件后,需要验证一下这个文件是否可用,如果有任何WARNING或者ERROR都是不可以通过的,它就不能被添加到Spec Repo中,不过是可以存在的,当然我们也可以通过 --allow-warnings 来屏蔽警告

pod spec lint GZPCode.podspec

当看到  GZPCode.podspec passed validation.  之后 就表明已经验证通过了,那么接下来我们就可以通过trunk推送pod spec文件到CocoaPod官方库中了.  CocoaPods/Specs代码库的地址是:https://github.com/CocoaPods/Specs

pod trunk push GZPCode.podspec    

上面的代码帮我们做了下面几件事情:

1、验证你的podspec文件是否合法。在trunk方式之前我们一般用“pod lib lint”命令进行验证。

2、上传podspec文件到trunk服务器(其实最终也会自动添加到https://github.com/CocoaPods/Specs中,只是使用trunk方式省去了以前先fork在pull request的繁琐操作)

3、将你上传的podspec文件转成json格式文件

执行上面的push操作,就相当于你把你的源代码提交给CocoaPods团队审核了,一般需要几秒钟或者几分钟就可以完成了。当我们看到下面这个界面就表示我们的GZPCode.podspec 文件已经成功的上传到了CocoaPod官方库中了。

四.更新本地pod索引库

    经过上面的步骤后我们已经成功的将spec文件上传到了CocoaPod官方库中了,但是我们本地的pod索引库还不是最新的,所以这个时候我们需要通过  pod setup  将远程的CocoaPods 索引库更新到我们本地。pod setup其实在做这么一件事:Cocoapods在将https://github.com/CocoaPods/Specs 的信息下载到你电脑的~/.cocoapods目录下并进行文件比对,总数据大小大约在300MB左右,再加上服务器在国外,因此速度会比较慢。在执行过程中你也可以新开一个Terminal窗口,cd到~/.cocoapods目录,用du -sh *来查看下载进度。第一次会比较慢,第一次以后只需要几秒钟即可完成。

五.测试使用

完成上面的步骤后我们可以来测试下 看看我们的框架是否可以通过 CocoaPods来集成了,首先我们在终端上 搜索下我们的框架  pod search GZPCode,很遗憾 没有搜索到,而且给我们一个红色的提示

[!] Unable to find a pod with name, author, summary, or description matching `GZPCode`

这是因为什么原因呢?其实原因很简单,这是因为我们本地索引库的检索文件 search_index.json 缓存造成的结果,我们将索引缓存路径 ~/Library/Caches/CocoaPods/ 下的这个json文件 删除后再次搜索就可以搜索到了


是不是很神奇? 下面你就可以通过 pod的命令来集成这个框架了。

谢谢大家,欢迎讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容