转载

iOS项目组件化搭建

项目组件化,顾名思义,就是将项目中的各个模块按照基础组建,功能组件,业务组件划分成一个个单独的模块,以使得各个模块间可以单独开发、测试、组合运行。

一般公司在天使轮后产品闭环已经确定,就需要实施组件化来应对A轮之后的业务扩张。

但也不是非得等到这一步才开始,如果在项目初期实施组件化,虽然代码量会有所增加,但是要把一个小项目组件化的难度也会小很多。

私有索引库

私有索引库的作用是存放.podSpec文件的。当你使用pod search AFN时,pod会在本地的索引库中进行搜索。

私有索引库分为本地私有索引库和远程私有索引库,它们是相互对应的。

  • 本地私有索引库

iOS项目组件化搭建

本地索引库

可以发现只有一个master,这个是CocoaPods的本地索引库,但它不是私有的,只要安装过CocoaPods的电脑,都会有这么一个索引库。它对应CocoaPods的远程索引库

由于它不是私有的,所以我们需要自己创建一个私有索引库。目前GitHub的私有代码仓库是需要money的,我们可以选择码云、码市等具有可以免费创建私有代码仓库的代码托管平台。操作和GitHub是一样的。就拿码市做例子。

  • 远程私有索引库

1.创建远程私有索引库。

iOS项目组件化搭建

创建远程私有索引库

2.复制远程索引库地址。

iOS项目组件化搭建

复制远程仓库地址

3.打开终端,将远程私有库关联到本地。

cd /Users/yufu/.cocoapods/repos
pod repo add LTSpec https://git.coding.net/lt1061961387/LTSpec.git

4.可以发现在Finder中多了一个LTSpec。这里就是我们用来存放组件的.podSpec文件的。

iOS项目组件化搭建

LTSpec私有库

私有代码仓库

代码仓库也分公私有,因为是公司的项目,不想暴露给别人,所以也需要建立私有代码仓库。

私有索引库也属于私有代码仓库,只是从功能上分开。一个是用来存放代码的,一个是用来存放.podSpec文件的。

私有代码仓库也分为本地私有代码库和远程私有代码库,它们也是相互对应的。

  • 本地私有代码库

1.在我们的主工程的同级目录下,创建我们的组件工程,比如我的主工程在我的桌面的LTMainProject目录下,我想抽取主工程里的网络通信模块。使用CocoaPods的模板在终端输入:

cd /Users/yufu/Desktop/LTMainProject
pod lib create LTNetworking

2.将自己抽取出的组件拷贝到创建的模板工程中

iOS项目组件化搭建

抽取的组件代码

  • 远程私有代码仓库

1.创建远程私有代码仓库

iOS项目组件化搭建

网络通信组件的私有代码仓库

2.修改组件的.podSpec文件

iOS项目组件化搭建

修改文件

3.提交本地私有模板组件代码到远程私有代码仓库,并打上tag标签

cd /Users/yufu/Desktop/LTMainProject/LTNetworking
git add .
git commit -m '创建网络通信组件'
git tag '0.1.0'
git remote add origin git@git.coding.net:lt1061961387/LTNetworking.git
git push -u origin master
git push --tag

4.对文件进行本地验证和远程验证

cd /Users/yufu/Desktop/LTMainProject/LTNetworking
pod lib lint --private
pod spec lint --private

5.将验证通过的.podSpec文件加入到本地私有索引库,并上传到远程私有索引库

pod repo push LTSpec LTNetworking.podspec

6.在LTSpec路径下就会出现LTNetworking

iOS项目组件化搭建

LTNetworking.podspec

7.查看远程私有索引库

iOS项目组件化搭建

远程私有索引库

8.使用终端查看自己的私有组件

pod search LTNetworking

iOS项目组件化搭建

pod search LTNetworking

现在就可以使用pod安装自己的私有组件了。

安装私有组件

打开终端一顿操作猛如虎

cd /Users/yufu/Desktop/LTMainProject/LTMainProject
pod init
vim Podfile
添加source ‘https://git.coding.net/lt1061961387/LTSpec.git’
添加pod 'LTNetworking'后退出
pod install

打开主工程发现组件已经乖乖躺在Pod里了

iOS项目组件化搭建

集成组件成功

集成完成。

作者:iOS_Latte

链接:https://www.jianshu.com/p/66b63f56b2d5

正文到此结束
Loading...