IOS工程组件化
前言
作为一位与时俱进的技术开发 ios工程组件化当然能显得具有逼格啦,接下来为大家介绍一下从零到一组件化的过程,让我们来看看吧。
首先为大家准备以下材料:
1.需要拆解的工程Demo,下载链接如下:模板工程链接
2.本地仓库代码(用来创建组件的工程)
3.远程仓库代码(用来存放组件工程的远程代码库)
4.本地索引库(存放本地索引文件的库)
5.远程索引库(存放这些索引文件的远程库)
下来给大家看下工程结构目录
![](https://img.haomeiwen.com/i13273079/76470bae6cba3f6f.png)
我们需要把以上的category当成一个组件封装起来,然后让我们的主工程去pod接受,好了 ,下面开始正式动手了。
1.创建远程索引库
打开github创建一个库,取名名“JSpecs”,获取库的下载链接,备用。
![](https://img.haomeiwen.com/i13273079/4452283e95579eac.png)
![](https://img.haomeiwen.com/i13273079/f236f5bd13833334.png)
2.创建本地索引库
打开终端,输入以下命令行
![](https://img.haomeiwen.com/i13273079/dd6cdd661a3f3bbc.png)
首先pod repo 查看本地存在多少个索引库
再然后新建本地索引库“JSpec” 关联到之前创建的远超索引库
“pod repo add JSpec 远程索引库地址
![](https://img.haomeiwen.com/i13273079/c82be1e372627c57.png)
发现已经存在本地了 ,想要查看的文件存放地址的话 可打开finder,在用户的目录下
![](https://img.haomeiwen.com/i13273079/3d50e59a3096e36d.png)
3.创建远程代码库
依然是利用github创建一个名为“JCategoryKit”的远程代码仓库,获取链接地址
![](https://img.haomeiwen.com/i13273079/0c489f45bd6656bb.png)
![](https://img.haomeiwen.com/i13273079/ebce8e6db1d4db8a.png)
4.创建本地组件代码库
这里我们用命令来创建
![](https://img.haomeiwen.com/i13273079/16fea4607060c9f3.png)
创建好之后会自动帮我们打开创建的项目工程,我们编译运行下 发现没任何问题
5.移动项目
接下来开始封装组件代码了。回忆一下,我们之前的目的是什么,我们是想把分解工程的“category”文件封装成一个组件
![](https://img.haomeiwen.com/i13273079/166db549bdc57033.png)
好,接下来动手。
我们先找到这个文件夹,然后把它拖到我们刚才创建的“JCategoryKit”工程下,并放到入下图所在的目录下。
![](https://img.haomeiwen.com/i13273079/be70120a6d5f55e0.png)
在接下来,cd到这个目录下 pod install
![](https://img.haomeiwen.com/i13273079/1784f961011f23a5.png)
![](https://img.haomeiwen.com/i13273079/4749418d195e5ff4.png)
编译没问题之后呢,我们修改一下工程的podspec文件
![](https://img.haomeiwen.com/i13273079/a8f2f214bda3b271.png)
6.上传代码
版本要记住,之后有用,地址要写远程代码库的地址。
好了之后 我们开始把代码推到远程库
- git add .
- git commit -m “xxx"
- git remote add origin 远程代码仓库地址
- git push origin master
- git tag 版本号 (注:这里的版本号必须和podspec里写的版本号一致,也就是1.0.0)
- git push --tags
7.校验本地索引文件
cd 到项目目录下,
![](https://img.haomeiwen.com/i13273079/c3c3721297b45a80.png)
然后开始校验
pod lib lint JCategoryKit.podspec --verbose --allow-warnings
![](https://img.haomeiwen.com/i13273079/1d447768f8e90b02.png)
校验成功。。。。。。。。
8.将本地索引提交到远程索引库
pod repo push <本地索引库> <索引文件名> --verbose --allow-warnings
![](https://img.haomeiwen.com/i13273079/f52d06e1b5bbd9b2.png)
成功之后你将看到
![](https://img.haomeiwen.com/i13273079/83ae09255dd65e2d.png)
快要接近成功了,让我们来试着在分解工程中调用这个组件库吧
9.引用组件库
打开工程“TemPlateAPP”,修改Pod文件之前,让我们先查看本地索引库的路径
![](https://img.haomeiwen.com/i13273079/abbbe5f388894bc1.png)
修改pod文件
![](https://img.haomeiwen.com/i13273079/fab5179a40e17859.png)
![](https://img.haomeiwen.com/i13273079/eef8e42d0af7a683.png)
pod install 安装
![](https://img.haomeiwen.com/i13273079/b41761d870e50e89.png)
安装完成之后,打开项目 你会发现组件库被集成进去了
![](https://img.haomeiwen.com/i13273079/1990a748fa635a7c.png)
------------大功告成-------------------
额外补充
如果还想继续进行封装组件,只需要重新创建本地库和远程库,无需创建本地索引和远程索引。
如果想封装的组件包依赖了某个第三方库的时候,比如封装APIKit的时候,这时候已经依赖了“AFNetwork“的时候,这时候,需要在podspec文件中加入依赖描述
![](https://img.haomeiwen.com/i13273079/9d12606b92fec5ad.png)
还是按照上述的操作,pod之后大功告成