iOS组件化开发(一):远程私有库的基本使用

随着项目功能的不断增加,越来越多的开发人员,业务主线也随之越来越多,造成耦合越来越严重,编译越来越慢,测试不独立等一系列问题。为了解决此类情况,我们可以考虑组件话开发

  • 概念: 组件话就是将一个单一的工程项目,分解成为各个独立的组件,然后按照某种方式,任意组织成一个拥有完整业务逻辑的工程

  • 优势

  • 独立:独立编写、编译、运行、测试
  • 重用:功能代码的重复使用。比如不同项目使用同一功能模块
  • 高效:任意增删模块,实现高效迭代
  • 组件化还可以配合二进制化,提高项目编译速度
  • 组件分类大体上分为三类:基础组件、功能组件和业务组件
  • 基础组件:也称为公共组件,存放平时定义的宏、常量、协议、分类、对必要的第三方的封装类,以及各种处理工具类,如时间、日期、设备信息、文件处理、沙盒管理等
  • 功能组件:自定义视图控件、一些特定功能的封装(如录音、播放音频封装)
  • 业务组件:各种业务线

步骤归纳

1、创建远程索引库和私有库

2、将远程索引库添加到本地 pod repo add 索引库名称 索引库地址

3、在本地创建一个pod模版 pod lib create 组件名称 将框架的核心代码添加到Classes目录下

4、本地安装测试核心代码是否可用 pod install。修改Spec描述文件,将修改好的模版库上传至远程私有库

5、上传代码

  1. git init
  2. git add .
  3. git commit -m "提交描述"
  4. git remote add origin 远程私有库地址
  5. git push origin master

6、打标签

  1. git tag '0.1.0'
  2. git push --tags

7、提交spec至私有索引库

  1. pod lib lint –private
  2. pod spec lint –private
  3. pod repo push 索引库名称 xx.podspec

8、使用

1
2
source  官方索引库url
source 私有库索引url

一、创建私用索引库

这里以码云为例,创建一个TGSpecs的私有索引库,这玩意的作用如其名,就是用来索引的

二、本地添加私有索引库

一、查看本地索引库

1
pod repo

如图,目前本地仅有github上的那个公有索引库

2、添加私有索引库

将我们刚刚新建的私有索引库TGSpecs添加到本地

1
2
3
4
// pod repo add 索引库名称 索引库地址
// pod repo remove 索引库名称 /*删除本地索引*/

pod repo add TGSpecs https://gitee.com/zhongqing05/TGSpecs.git

再查看一下本索引 pod repo

现在本地就有两个索引库。到这里,索引库的的事情就先放一边了

三、创建组件库

1、创建远程代码仓库

创建TGBase为例,创建一个基础组件

2、本地快速创建模版库

到合适的位置创建一个与组件名相同的文件夹,cd 进去后,使用命令

1
2
3
//pod lib create 组件名

pod lib create TGBase

这里会让你配置一些信息,根据自己的情况自行配置即可。

3、添加组件内容

创建完成后,会自动帮我们打开相应的Example项目,TGBase目录中会出现如图这些文件,我们把基础组件相关的东西丢到Classes文件夹中,并且把ReplaceMe.m 文件删除

note:默认Classes文件夹中存放的文件就是pod install 时要下载下来的文件,当然可以通过修改spec文件的配置来更改位置

4、安装与测试本地库

cd到 Example目录下,打开Podfile文件可以看到

1
pod 'TGBase', :path => '../'

模版库已经默认帮我们在Podfile中指定了TGBase.podspec 的位置,使组件可以正常安装使用和方便测试

1
pod install

如上图安装成功,Xcode打开项目,也能看到刚刚添加的文件

到这里,本地测试组件没问题后,我们接下来要将podspec文件进行修改,然后上传至私有索引库

5、修改Spec

具体的配置说明可以参考Cocoapods创建第三方框架

主要修改内容

1
2
3
4
5
6
7
8
9
  s.name             = 'TGBase'
s.version = '0.1.0'
s.summary = 'TGBase.'
s.description = <<-DESC
TODO: TBase is Tiange Technology Basic component
DESC
s.homepage = 'https://gitee.com/zhongqing05/TGBase'
s.source = { :git => 'https://gitee.com/zhongqing05/TGBase.git', :tag => s.version.to_s }
s.source_files = 'TGBase/Classes/**/*'

四、上传组件代码

1、将代码提交到组件仓库

1
2
3
4
5
6
git add .
git commit -m '提交说明'
git remote add origin https://gitee.com/zhongqing05/TGBase.git
//第一次push如果报错的话可以加上-f
//git push -f origin master
git push origin master

2、打标签

1
2
git tag '0.1.0'
git push --tags

五、提交podspec到私有索引库

在上传spec文件前我们可以做一个验证来节省时间,不然每次推送很久结果还是验证失败,会气死人的

1、本地验证Spec的必填字段

1
2
// 本地验证不会验证 s.source 中的tag
pod lib lint

2、远程验证

1
2
// 远程验证会验证 s.source 中的tag,如果此时没有打上相应的标签则会报错
pod spec lint

如果你刚才没有打标签,并上传至远程私有库进来进行验证,肯定是会报错

note:如果验证的是私有库,则后面加上 --private,否则会有警告,你可以选择 --alllow-warnings 来忽略警告

3、提交podspec

1
2
3
//pod repo push 私有索引库名称  spec名称.podspec

pod repo push TGSpecs TGBase.podspec

这里的操作过程:先将我们的代码直接push到本地索引库TGSpecs,推送后自动会帮我们同步到远程索引库

再来看看码云上的私有索引库TGSpecs

来测试下我们的组件

1
pod search TGBase

六、使用私有库

现在我们可以试试通过pod的形式来添加TGBase,创建一个新项目,cd到工程目录下

1、添加Podfile文件

1
pod init

2、在Podfile的最顶部添加索引库Url

1
2
source 'https://github.com/CocoaPods/Specs.git'
source 'https://gitee.com/zhongqing05/TGSpecs.git'

3、添加使用组件

1
pod 'TGBase'

4、安装组件

1
pod install

查看工程。从远程下载过来的代码

本文参考:https://juejin.im/post/5ac5d5abf265da2396129e63

0%