组件化这个东西已经流行很久了,很多大公司已经有一套十分完善的组件化体系,有的公司随着规模的不断扩大也开始在进行组件化之路。
最近刚刚入职了一家公司,开发人员队伍不断壮大,准备从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
我们可以看到有两个文件,master
是cocoapods
的公有仓库,ZRSpec
就是我们自己的私有仓库了,我们使用一台新电脑,第一次配置cocoapods
的时候常常会觉得十分的慢,就是因为会将cocoapods
的公有仓库全部clone
下来,而之后我们使用pod install
的时候其实是在本地抽取这些三方库的。
接下来就可以封装我们的功能模块们啦,在自己的私有git地址中,创建新的项目,比如网络库之类的东西。
在桌面新建立一个空文件夹,然后在私有git页面中进入我们相对应的功能模块中,将项目使用source tree或者终端clone到我们的空文件夹里面。
使用Xcode在这个空文件中建立一个静态库项目,将我们封装好的代码添加到这个项目中
然后将这个工程push
到我们的远端,接下来就要进入关键的步骤,将我们的代码push
到远端之后,使用终端cd到我们的工程目录下,执行pod spec create ZRNetwork
,建立podspec
文件,并且根据提示配置我们的podspec
。
这个podspec
如果不按规定去书写,在我们校验的时候就会报错,结果就是无法提交成功,推荐大家看看这篇专门讲解podspec
的文章,文章见讲的很详细,基本我们遇到的问题都涵盖了。
在项目中存在podspec
的路径下执行pod lib lint
我们可以看到终端提示说有四个警告
,并且提示说使用--allow-warnings
命令可以忽略他们,推荐大家根据提示解决所有警告,再进行验证,但是如果可以忍受warn那也可以。
这样我们就验证成功啦,这一步说明你的lib
编译完全没问题,可以成功运行,但是不要高兴的太早。
接下来需要我们为项目打tag,⚠️这个tag必须和podspec的版本号一致,依次输入以下命令。
我们还要对spec
进行验证,这一步是验证你的podspec
写的对不对,远端是否有podspec指定的版本号,pod spec lint
,爆出警告同样添加--allow-warnings
命令,验证通过后记得将podspec
的改动同样也push
到远端仓库。
两步都成功的同学恭喜你,距离成功近在咫尺了,接下来就是将我们的podspec文件
,push
到我们的私有仓库
中,它才会进行管理,在终端cd
到项目目录文件中执行pod repo push ZRSpec ZRNetwork.podspec
命令,先填写私有仓库名称
,再填写我们的podspec文件名称
,爆出警告同上,写那一句我个人特别喜欢写的代码。
恭喜你,你自己封装的代码已经成功上传到私有库,并且可以被cocoaPods管理了,随便建新一个项目,生成podfile
,然后pod
一下试试,⚠️对了,执行pod install
之前请务必先执行pod repo update
,之前已经说过了,每次pod
其实是在本地
抽取,咱们刚刚上传到私有仓库,本地肯定还不知道,pod repo update
更新一下。
再次⚠️这回的podfile
书写可不太一样,我们需要添加source
,指定我们私有库的地址
,不然它只会去cocoapods
的仓库中去找,当然找不到啦。
激动人心的时候到啦,我们来pod install
!
我们的项目里也有啦!