制作自己的开源项目支持Cocoapods下载

对于开发者来说,随着自己的开发经验越来越久,或是自己对于某个方面、知识点研究的比较透彻,应该都会尝试着写一个属于自己专属的功能文件,比如呢:图片轮播、相册选择、文件上传下载、音视频播放、UI动画、自动布局、刷新数据等…但怎么让自己写好的开源文件支持Cocoapods下载方便自己、他人使用呢,相信你认真看过这文章后一定也会掌握好这项技能的。

准备条件: GitHub账号,Trunk账号,GitHub Desktop客户端,Markdown编辑器

1. 创建开源的Public仓库

GitHub个人主页创建任意一个你想开源的仓库

包含的术语:
Repository name仓库名称
README说明文档
.gitignore包含的文件类型,即.git文件类型GitHub都不会将其加入到版本管理中
license文件(正规的仓库都应该有必须有且有一个,Pods依赖库对这个文件的要求更严)

创建步骤如图

接着clone到本地GitHub Desktop

clone本地

Finder打开本仓库,看到目录结构如下

Snip20160717_12.png

2. 创建podspec描述文件

podspec文件:
它本质是个ruby文件,里面包含代码的作者、版本号、源代码地址、依赖库等信息的文件,任何支持Cocoapods的开源代码都必须有podspec文件,这样开源很方便的让Cocoapods搜索到对应的podspec

创建podspec文件

pod spec create 工程名

创建好之后在Finder中看到的目录结构如下

创建podspec之后目录结构

接着在工程文件内部添加你自己的开源文件(文件名建议和工程名一样),这时也可以添加为开源框架说写的Demo,这样方便开发者更好的理解、使用等(这不是必须的,但我个人还是强烈建议用封装好的开源文件写个Demo

整体目录结构

这时再打开客户端GitHub Desktop,可以看到待提交文件和历史提交记录等

待提交文件

然后打开并编辑自己仓库的podspec描述文件

编辑podspec描述文件

podspec常用的参数的含义解释如下:

s.name 仓库名字
s.license 文件类型
s.requires_arc 是否支持ARC
s.version 当前版本号
s.platform 支持的平台
s.framework 导入依赖的框架库
s.summary 仓库功能的描述
s.author 作者信息
s.source_files 源文件的路径(相对podspec文件而定)
s.resourcs 资源文件,不需参与编译的
s.homepage 主页地址
s.source 具体路径
s.public_header_files 预编译头文件路径

podspec语法结构

Pod::Spec.new do |s|
 ...
 ... 
s.subspec '子目录' do |ss|
 ...
end 
s.subspec '子目录' do |ss|
 ... 
end 

end

即:它从Pod::Spec.new do |s|开始,到最后一个end结束中间每一个subspec到end是一个子目录,子目录对应的|**|中间名字是可以任意给命名的,但子目录内部使用的名称必须一致

podspec通配符的说明

- a{bb,bc}def.{h,m}表示四个文件abbdef.h abbdef.m abcdef.h abcdef.m
- *.{h,m,mm}表示所有的.h .m .mm文件
- Class/**/*.{h,m}表示Class目录下的所有.h .m文件
3. 为源代码添加对应的Tag
  1. 在GitHub上面的源代码需要打上版本号标签,这样Cocoapods管理器才能更准确地找到你的repo
  2. 通过Iterm命令push源代码的tag
git tag '0.0.1' //版本号 
git push --tags //提交标签

截图如下:


Snip20160717_13.png

这时打开自己的GitHub主页

注意:若是以上步骤都不错的话,这时Tags下的文件和Branches下的文件应是一一对应的,如下:

Snip20160717_14.png
Snip20160717_15.png
4. 验证podspec文件的正确性
pod spec lint 工程名字.podspec --verbose

成功之后的截图如下:


Snip20160717_16.png

注意:任何的警告、错误都是不能被添加到Spec Repo

5. 通过Trunk推送给Cocoapods服务器

首先向trunk服务器查询自己的注册信息

pod trunk me

存在Trunk账号截图:

Snip20160717_17.png

没有注册Trunk的话,注册一个账号

  • 先确认当前的Cocoapods版本号(最低要求版本0.33),现在最新的版本号好像是1.0.1
pod --version / gem list --local | grep cocoapods

若是版本不满足,更新一下

sudo gem install cocoapods

注册Trunk账号,回车之后去打开邮箱的链接(需要copy,不能直接点击)即可完成

pod trunk register 邮箱全称 '用户名' --verbose

最后通过终端push对应的podspec,完成开源项目支持Cocoapods下载的最后一步

pod trunk push 工程名字.podspec

成功的结果截图:


Snip20160717_18.png
5. 更新本地pod依赖库
pod setup

结果截图如下:


Snip20160717_19.png

这时就可以搜索自己刚提交过的开源文件


Snip20160717_20.png
  • 成功之后Cocoapods服务器会将上传的podspec文件转换为需要的json文件
  • 检验你自己的开源描述文件
  • 前往文件夹 - ~/.cocoapods/repos/master/Specs找到对已应的json文件,如截图所示:
    Snip20160717_21.png

打开json文件内容:

Snip20160717_22.png

  • 此刻,你也可以在Cocoapods官方的spec文件中查询到对应的json文件,Cocoapods的Spec,方法如上面所示,这里省略…

自此,制作自己的开源项目支持Cocoapods下载的全部操作流程结束。

6. 更新仓库的版本

若是修改描述文件、更新开源文件等都需要重新更新仓库
步骤如下:

  • 修改podspectag(代码版本号)
  • 重新trunkCocoapods服务器

今回家早了些,自己最近在写即时通讯IM的东西,忙的好久没上过简书了,还好现在终于给这个知识点写完了…晚安啦。。。

最后附上之前的参考链接:
CocoaPods安装使用及配置私有库

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

推荐阅读更多精彩内容