[原创]使用Cocoapods从零开始搭建组件库

很久以前写的公司内部的分享资料,现在拿出来供大家参考。

Cocoapods也不是什么新东西了,基本用法按下不表,我最喜欢它的两个功能是:LocalPods和cocoapods私有库。本文以搭建一个组件库为例介绍如何使用cocoapods私有库。

1、搭建组件库

具体分为7步

a) 申请开通git仓库:http://git.xxx.cn/apps/iOSComponents.git

b) 在git仓库中初始化Spec Repo

c) 开发组件

d) 创建该组件对应的Podpodspec文件,转成Pod

e) 将组件的代码放入代码仓库(可以是git或者svn)

f) 本地测试配置好的podspec文件是否可用

g) 向Spec Repo中提交podspec

步骤a)没什么好说的,找公司的git管理员申请一个git仓库即可,注意要给合作的同学们都开好相应的权限

步骤b)

每个pod工程都有一个索引文件以.podspec结尾,该文件描述了pod工程的所有内容,包括最重要的源码地址以及依赖关系。使用pod update来添加新的依赖时,cocoapod就是先找到新依赖的.podspec文件,再顺着它来下载、配置新工程。而cocoapod去寻找.podspec文件的地方,就是Spec Repo。说得更简单些,一个Spec Repo就是一个Git Repo,它的文件结构如下:

.

├── Specs

          └── [SPEC_NAME]

                   └── [VERSION]

                            └── [SPEC_NAME].podspec

了解原理后,执行下面这条命令让本机的cocoapod认识我们刚申请的git仓库,并把它当成Spec Repo

命令声明:# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

用法举例:$ pod repo add ComSpecs http://git.xxx.cn/apps/iOSComponents.git

步骤c) 开发组件

假装我们开发完了一个组件,名字叫Component1

步骤d) 转化成Pod

先把Component1文件夹下的内容剪切到其他地方(比如A文件夹)

先cd到Component1文件夹下然后执行如下命令

$ pod lib create Component1Lib

之后他会问你四个问题,1.是否需要一个例子工程;2.选择一个测试框架;3.是否基于View测试;4.类的前缀;4个问题的具体介绍可以去看官方文档,我这里选择的是1.no;2.Specta/Expecta;3.no;4.PTL。 问完这4个问题他会自动执行pod install命令创建项目并生成依赖。生成的文件夹结构如下

Component1Lib

├── LICENSE                              #开源协议 默认MIT

├── Pod                                      #组件的目录

│  ├── Assets                            #资源文件

│  └── Classes                              #类文件

├── Component1Lib.podspec          #第三步要创建的podspec文件

└── README.md                                #markdown格式的README

然后,将刚才提到Component1文件夹内原来的内容拷贝回来,源码放进Classes文件夹,资源文件放进Assets文件夹。再用文本编辑器打开Component1Lib.podspec,对照一下里面各种参数是否正确,具体用法参见官网例子,这里不展开讨论。

e) 提交代码

将刚才我们修改后的Component1Lib文件夹提交到代码仓库,可以是git也可以是svn,区别就是Component1Lib.podspec中source的写法会有区分。

f) 本地测试podspec文件

在Component1Lib文件夹下执行如下命令

$ pod lib lint --verbose

可能会有些warning或者error,根据提示修改即可

g) 向Spec Repo推送.podspec

执行如下命令:

$ pod repo push DJSpecs PodTestLibrary.podspec


至此,我们的私有库创建完毕,并且提交了第一个组件,然后,我们来看看,其他的同学该如何使用这个组件库。


2、使用组件库

a) 添加私有pods库

命令声明:# pod repo add [Private Repo Name] [GitHub HTTPS clone URL]

用法举例:$ pod repo add ComSpecs http://git.xxx.cn/apps/iOSComponents.git

添加完之后,本机的Cocoapod在搜索新的Pod依赖时,就会顺道来我们的ComSpecs中寻找。

b) 编辑podfile文件,并update

这步比较简单,冒号后面是我们组件代码真正的地址,理论上不写也可以的,但是实践过程中发现写了比较保险

platform :ios, '7.0'

pod 'Component1Lib', :svn => "http://svn.xxx.com/trunk/ios/Components/Component1Lib"

再执行pod update,Component1Lib就添加到了你的主工程中。

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

推荐阅读更多精彩内容