iOS 组件化开发(cocoapods拆分项目)

组件化开发前景随笔

随着企业项目的功能不断的扩展,不管是项目的测试还是项目的编译都会遇到很大的问题,编译时间过长,测试不灵活,耦合度高.所以组件化开发变得很有必要.

准备工作

1.安装好Xcode;
2.配置好cocoa pods;
3.有git托管的私有库.

拆分流程

1.创建远程私有索引库,即私有的specs repo .(这里解释一下索引库:我们开发中常用的比如AFN, SDWebImage...等,这些都是开源的库,我们是通过cocoapods官方的索引库来检索的,私有索引库则规定项目成员,或者有权限的人有权限访问).

1.1创建私有的远程索引库步骤(这里以国内的码市(托管平台为例))
iOS 组件化开发(cocoapods拆分项目)_第1张图片
Snip20170524_14.png
1.2找到远程所有的地址(这里可以通过https访问也可以通过ssl,不在一一描述)
iOS 组件化开发(cocoapods拆分项目)_第2张图片
Snip20170524_15.png

2.添加repo到本地(本地索引库)

iOS 组件化开发(cocoapods拆分项目)_第3张图片
Snip20170524_9.png
2.1添加本地私有索引库的步骤

iOS 组件化开发(cocoapods拆分项目)_第4张图片
Snip20170524_13.png

这里我们通过可以 pod repo help命令看到 pod repo add的命令

2.2添加本地索引库

pod repo add xxxSpecs https://git.coding.net/xxxxx/xxxxxSpecs.git

Snip20170524_22.png
2.3验证本地私有索引库的创建是否成功

pod repo

iOS 组件化开发(cocoapods拆分项目)_第5张图片
Snip20170524_23.png

当出现2个repo,你创建的本地私有索引库则创建成功.

3.创建pod工程

3.1pod Lib create xxxxxxxx代表你要创建的pod工程名字

这个命令会从官方获取一个空的pod工程的模板


iOS 组件化开发(cocoapods拆分项目)_第6张图片
Snip20170524_24.png
3.2这时候会生成一个空的模板工程
iOS 组件化开发(cocoapods拆分项目)_第7张图片
Snip20170524_25.png

iOS 组件化开发(cocoapods拆分项目)_第8张图片
Snip20170524_26.png
3.3
iOS 组件化开发(cocoapods拆分项目)_第9张图片
Snip20170524_28.png

这时候模板功能里面就出现了我们写的基本分类


iOS 组件化开发(cocoapods拆分项目)_第10张图片
Snip20170524_29.png

4.把我们写的库托管到远程代码仓库

4.1创建远程的仓库(步骤同上述获取到远程地址)
4.2这时候需要改模板工程里面的.podSpecs文件
iOS 组件化开发(cocoapods拆分项目)_第11张图片
Snip20170524_37.png
4.3将写好的库同步到远程
iOS 组件化开发(cocoapods拆分项目)_第12张图片
Snip20170524_31.png
Snip20170524_32.png
4.4远程私有索引库需要版本控制信息,这里需要打tag

git tag '0.1.0'打上tag
git push --tags将tag提交到远程仓库

5.向本地私有索引库提交.podspec

git repo push xxxxxx(本地私有私有库的名称) xxxx.podspces(本地模板工程的.podspec)
注意这一步,它会先向本地私有索引库提交.podspec然后自动向远程私有索引库提交 .podspec

6.验证私有库的创建是否成功

pod search xxxx(我们创建私有库的名称)

iOS 组件化开发(cocoapods拆分项目)_第13张图片
Snip20170524_38.png

7.使用我们创建的私有库

正常的创建工程,创建podfile文件

iOS 组件化开发(cocoapods拆分项目)_第14张图片
Snip20170524_41.png

8.远程私有库的依赖解决

开发中我们常用的比如网络的二级封装来作为网络请求基础组件,我们在使用中依赖于AFNetworking,则需要我们修改.podspec文件的信息

Snip20170524_42.png

这时候我们使用自己的私有库就会一同把依赖的三方库下载下来

8.私有库的优化

8.1优化背景分析

我们在开发中封装的基础组件,有很多种,有时候我们只是单纯的使用某一个分类而不需要网络请求工具类,这时候则需要subspec,来管理.

iOS 组件化开发(cocoapods拆分项目)_第15张图片
Snip20170524_43.png

然后将修改过后的文件提交到远程私有库,同时更新本地私有索引库(自动提交远程私有索引库)

8.2验证修改成果
iOS 组件化开发(cocoapods拆分项目)_第16张图片
Snip20170524_44.png
8.3使用subspaces

我们如果只需要使用其中某一个类就可以在podfile使用
pod 'xxxxxBase/Category'的命令来使用一个类,而不会造成所有基础组件库全部下载下来.

你可能感兴趣的:(iOS 组件化开发(cocoapods拆分项目))