一、前言
随着项目功能的不断增加,越来越多的开发人员加入,业务主线也随之越来越多,造成耦合越来越严重,编译越来越慢,测试不独立等一系列问题。为了解决此类情况,我们可以考虑到使用组件化开发
1、概念
组件化就是将一个单一工程的项目, 分解成为各个独立的组件, 然后按照某种方式, 任意组织成一个拥有完整业务逻辑的工程
2、优势
- 独立:独立编写、编译、运行、测试
- 重用:功能代码的重复使用。比如不同项目使用同一功能模块
- 高效:任意增删模块,实现高效迭代
- 组件化还可以配合二进制化, 提高项目编译速度
3、组件分类
- 基础组件:也称为公共组件,存放平时定义的宏、常量、协议、分类、对必要的第三方的封装类,以及各种处理工具类,如:时间、日期、设备信息、文件处理、沙盒管理等
- 功能组件: 自定义视图控件、一些特定功能的封装(如录音、播放音频封装)
- 业务组件:各种业务线
二、远程创建私有索引库
组件模块由CocoaPods进行管理。对于一个企业项目,我们不太可能公开项目的代码,所以我们需要创建私有的CocoaPods仓库。以下操作是在公司内部搭建的GitLab上完成。
创建组件索引库.jpeg
三、本地添加私有索引库
pod repo #查看本地索引库
pod repo add 索引库名称 索引库地址 #添加本地索引库
pod repo remove 索引库名称 #删除本地索引库
pod repo add XLGSpecs http://115.231.63.170:28080/components-ios/XLGSpecs.git
添加本地索引库.png
四、创建组件库
创建组件库.jpeg
1、快速创建模版库
到合适的位置创建一个与组件名相同的文件夹,cd进去后,使用如下命令
# pod lib create 组件名
pod lib create XLGNetwork
创建XLGNetwork模板库.png
2、添加组件内容
创建完成后会自动帮我们打开相应的Example项目,XLGNetwork目录中会出现如图这些文件,我们把基础组件相关的东西丢到Classes文件夹中,并且把ReplaceMe.m文件删除
XLGNetwork工程目录.png
默认Classes文件夹中存放的文件就是pod install时要下载下来的文件,当然可以通过修改spec文件的配置来更改位置
3、安装与测试本地库
pod install #将本地的组件添加进Example
安装成功之后测试组件有没有问题,没有问题继续下面的步骤
4、修改Spec
XLGNetwork.png
五、上传组件代码
1、将代码提交到组件仓库
cd ../XLGNetwork #XLGNetwork.podspec上一级目录
git init
git add .
git commit -m "提交描述"
git remote add origin 远程私有库地址
git push origin master
2、打标签
标签0.1.0与spec中的s.version保持一致
git tag '0.1.0'
git push --tags
六、提交podspec到私有索引库
1、本地验证Spec
#本地验证不会验证 s.source 中的tag,--private验证私有库,--allow-warnings忽略警告
pod lib lint --private --allow-warnings
2、远程验证Spec
#远程验证会验证 s.source 中的tag,如果此时没有打上相应的标签则会报错
pod spec lint --private --allow-warnings
Spec验证.png
3、提交podspec
#pod repo push 私有索引库名称 spec名称.podspec
pod repo push XLGSpecs XLGNetwork.podspec
提交Spec.png
4、搜索验证
pod search XLGNetwork
XLGNetwork.png
七、使用私有库
platform :ios, '8.0'
source 'https://github.com/CocoaPods/Specs.git' #公共索引库
source 'http://115.231.63.170:28080/components-ios/XLGSpecs.git' #私有索引库
target 'XLGComponentDemo' do
pod 'XLGNetwork'
end
八、总结
1、创建远程索引库和私有库
2、将远程索引库添加到本地 pod repo add 索引库名称 索引库地址
3、在本地创建一个pod模板库 pod lib create 组件名称
将框架的核心代码添加到Classes目录下
本地安装测试核心代码是否可用 pod install
修改Spec描述文件
将修改好的模板库上传至远程私有库
4、上传代码和打标签
git init
git add .
git commit -m "提交描述"
git remote add origin 远程私有库地址
git push origin master
git tag '0.1.0'
git push --tags
5、提交spec至私有索引库
pod lib lint --private
pod spec lint --private
pod repo push 索引库的本地名称 xx.podspec
6、使用
source 官方索引库url
source 私有索引库url
pod '组件名称'
pod install
九、组件化参考文章
1、iOS组件化实践(一):简介
https://www.jianshu.com/p/568e875abd48
2、iOS 组件化开发(二):远程私有库的更新与子库
https://blog.csdn.net/lincsdnnet/article/details/79837017
3、iOS组件化/模块化
https://www.jianshu.com/p/06e9aa0da8cc
3、源码技术博客
https://github.com/guangqiang-liu
十、推荐一个小工具
MARKDOWN在线生成PDF
http://www.mdtr2pdf.com/index.html
网友评论