手把手教大家iOS组件化

组件化这个东西已经流行很久了,很多大公司已经有一套十分完善的组件化体系,有的公司随着规模的不断扩大也开始在进行组件化之路。
最近刚刚入职了一家公司,开发人员队伍不断壮大,准备从0开始进行组件化之路,由于之前的公司就是组件化模式,我原以为这次的任务对我来说应该是轻车熟路,但是却是遇到了很多新老问题,下面我就开始手把手教给大家如何使用cocoapods进行组件化开发。
所谓组件化其实说简单了就是像我们使用cocoapods在项目中pod代码一样,大家分别开发自己的功能模块,上传到私有git上,然后在主工程中pod下来,每个模块都可以独立拿出来运行,对于单元测试以及模块间解耦合都是好处多多。
铺垫了这么多,下面就正式开始我们的组件化之路,组件化和git是分不开的,我们可以先自己建立一个私有库来进行学习,然后再使用到公司的项目中去,这里我推荐腾讯云开发者平台,大家可以免费在这里设置自己的私有git,管理代码。
首先在自己的私有git地址中建立一个spec repo,这个项目很特殊,它相当于CocoaPods spec一样,说白了CocoaPods spec就是一个公有的大型仓库,我们平时用的AFNetworking,SDWebImage等第三方都存储在这个大仓库中,而我们自己建立的这个spec repo就是我们自己私有的仓库,用于存放我们自己的项目,在需要用到时从我们自己的仓库中pod下来。
私有组件化仓库
这个名称可以随意起,但是我推荐大家使用Spec结尾,别人一看就知道这个是私有仓库,而不是封装好的功能模块,业务代码之类的。
建立好我们的私有仓库后,就可以打开我们的终端输入,pod repo add ZRSpec https://git.dev.tencent.com/ERRORMAN/ZRSpec.git,仓库名字和地址不要写错了,然后输入open ~/.cocoapods/repos
cocoapods文件路径
我们可以看到有两个文件,mastercocoapods的公有仓库,ZRSpec就是我们自己的私有仓库了,我们使用一台新电脑,第一次配置cocoapods的时候常常会觉得十分的慢,就是因为会将cocoapods的公有仓库全部clone下来,而之后我们使用pod install的时候其实是在本地抽取这些三方库的。
接下来就可以封装我们的功能模块们啦,在自己的私有git地址中,创建新的项目,比如网络库之类的东西。
功能模块
在桌面新建立一个空文件夹,然后在私有git页面中进入我们相对应的功能模块中,将项目使用source tree或者终端clone到我们的空文件夹里面。
项目地址
使用Xcode在这个空文件中建立一个静态库项目,将我们封装好的代码添加到这个项目中
封装好的代码
然后将这个工程push到我们的远端,接下来就要进入关键的步骤,将我们的代码push到远端之后,使用终端cd到我们的工程目录下,执行pod spec create ZRNetwork,建立podspec文件,并且根据提示配置我们的podspec
配置好的podspec
这个podspec如果不按规定去书写,在我们校验的时候就会报错,结果就是无法提交成功,推荐大家看看这篇专门讲解podspec文章,文章见讲的很详细,基本我们遇到的问题都涵盖了。
在项目中存在podspec的路径下执行pod lib lint
20190508155703.jpg
我们可以看到终端提示说有四个警告,并且提示说使用--allow-warnings命令可以忽略他们,推荐大家根据提示解决所有警告,再进行验证,但是如果可以忍受warn那也可以。
--allow-warnings命令
这样我们就验证成功啦,这一步说明你的lib编译完全没问题,可以成功运行,但是不要高兴的太早。
接下来需要我们为项目打tag,⚠️这个tag必须和podspec的版本号一致,依次输入以下命令。
设置tag
我们还要对spec进行验证,这一步是验证你的podspec写的对不对,远端是否有podspec指定的版本号,pod spec lint,爆出警告同样添加--allow-warnings命令,验证通过后记得将podspec的改动同样也push到远端仓库。
pod spec lib 验证通过
两步都成功的同学恭喜你,距离成功近在咫尺了,接下来就是将我们的podspec文件push到我们的私有仓库中,它才会进行管理,在终端cd到项目目录文件中执行pod repo push ZRSpec ZRNetwork.podspec命令,先填写私有仓库名称,再填写我们的podspec文件名称,爆出警告同上,写那一句我个人特别喜欢写的代码。
20190508163450.jpg
恭喜你,你自己封装的代码已经成功上传到私有库,并且可以被cocoaPods管理了,随便建新一个项目,生成podfile,然后pod一下试试,⚠️对了,执行pod install之前请务必先执行pod repo update,之前已经说过了,每次pod其实是在本地抽取,咱们刚刚上传到私有仓库,本地肯定还不知道,pod repo update更新一下。
检查到啦
再次⚠️这回的podfile书写可不太一样,我们需要添加source,指定我们私有库的地址,不然它只会去cocoapods的仓库中去找,当然找不到啦。
20190508164456.jpg
激动人心的时候到啦,我们来pod install
pod成功

我们的项目里也有啦!

20190508164718.jpg
是不是还算简单,就是有点麻烦,当我们进行更新的时候同样执行打tag操作,更新podspec中的版本号,为项目打tagpodspec版本号对应,将改动push到远端,再执行push repo ZRSpec ZRNetwork.podspec就ok了,pod install之前别忘了pod repo update哦。
如果有不懂的随时评论,或者留下你的QQ,我加你替你看看,totally free!!!,如果你要是不好意思的话请我喝杯王老吉就行啦,如果我写的哪里有不对的地方,操作不规范的地方,也请大家指出来,共同进步。大家以为组件化就这样结束了吗,其实不然,这里面十分多的大坑,比如OC和swift混编的私有库可是把我折磨坏了,我留到下一篇去讲,这一篇是常规操作,应付一般的纯OC代码或纯swift够用了,下一篇我讲告诉大家更高级的组件化玩法!
特别感谢一个大神写的文章,我就是看他的文章完成了人生的第一个组件化项目,推荐大家也去看看这一篇文章
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352