iOS组件化(二)-组件化前期工作

本文为博主原创文章,未经博主允许不得转载
上一次我们讲了为什么组件化,这次我们就开始组件化的前期工作。

一、Git库准备工作

  1. 独立工程git库:存放管理我们独立工程代码
  2. spec git库:专门提交我们的私有库spec的git库

二、新建工程

既然我们要组件化,那么我们首先就是先有相关代码的独立工程,这点不管是基础库,还是未来的业务库,都是如此,区别只在于复杂程度和相关的功能组成上。
对于工程我们没有特殊的设置,默认空白工程即可:
这里写图片描述

三、集成pod管理

我们组件化的接入完全依赖pod管理库,所以我们要将独立的代码打成独立的pod库,一般来说我们只需要打成私有库,之后以pod库的方式接入即可。
PS:当然也有打成framework等方式,但是这不是本系列文章的范围

1.添加podfile文件

cd 到工程路径
pod init   //生成podfile
pod install  //这里直接利用空的podfile生成workspace

执行完毕后的工程如下:
这里写图片描述
这样我们的独立工程就建好了。

2.添加podspec文件

podspec文件就是我们私有库的索引文件,他包含我们私有库的所有信息

pod spec create NAME  //创建NAME.podspec文件,名字随便起

这里写图片描述
这样在目录下,我们就创建了该podspec。

建议将podspec拖入工程,这样方便随时更改。

3.编辑podspec文件

  • 接下来我们看看podspec的内容,主要是一些官方例子,我们暂时用不到那么多复杂用法,我们进行删减,留下没有注释的东西:
    这里写图片描述
    这里有我们需要编辑的东西,有关之后的复杂用法,可以参考官方的文档,或者新建出一个podspec当做官方例子去查阅,当然其中也有不全的地方,比如添加私有framework,这就需要在google、百度一下具体操作了,这里就不再赘述了。
    这里写图片描述
    如图需要编辑的地方。
  • 我们暂时将sourcefile的路径修改为以下的路径:
s.source_files = 'CSDNModuleExample/src/*.{h,m}'
s.public_header_files = 'CSDNModuleExample/src/*.h'

4.基础库独立工程

  • 上述的source路径就是我们的源码的位置,我们在相应的工程路径下创建src文件件,并将我们拆分好的基础库文件放在这里,这里举个例子就放几个例子文件:
    这里写图片描述
  • 配置podfile中的本地私有库路径,以便调式
    这里写图片描述
    path的路径为podfile所在位置podspec的相对路径
  • 生成调式版本的本地私有库
    pod install
    这里写图片描述
    成功之后,我们就可以看到工程中:
    这里写图片描述
    在pods工程下的development pods下,我们可以看到我们的文件,这时候也可以build一遍检查错误,在此处修改添加文件等都是可以的,和正常的工程没有区别。
  • OK,到这里我们的本地私有库算是成功建立了,接下来我们就要真正的去建立远程私有库了

5.上传私有库spec

  • 首先我们要先建立我们spec git库的索引,以便我们的podspec可以通过命令上传到我们spec git库。
    pod repo add NAME URL
    name是我们随便起的,使我们url(spec库地址)的别名,我们之后上传spec都通过这个别名。
    PS:这里我们就起名CSDNModuleExampleLibrary
  • 版本确认,上传全部工程代码,在最新提交出打tag:0.0.1
    这里写图片描述
    此处要对应podspec中的s.version= "0.0.1"字段,并且要参考:tag => "#{s.version}",如果#号前面有相应的前缀,则tag也要加相应的前缀进行一一对应,这样可以在一个工程中区分多个不同的库。
  • lint spec
    pod lib lint CSDNModuleExample.podspec --verbose --no-clean --allow-warnings --use-libraries --sources='https://github.com/CocoaPods/Specs.git'
  • push spec至远程库
    pod repo push CSDNModuleExampleLibrary CSDNModuleExample.podspec --allow-warnings --use-libraries --sources='https://github.com/CocoaPods/Specs.git,http://gitlab.specGIT库的地址.git'

  • 这几步都做完了之后,push显示成功(lint一般在最初的调式时进行本地验证使用,后期改动不大的情况下直接显示push更省时间)
    这里写图片描述
    我们可以在我们的spec git库看到提交。

  • 我们成功地创建了我们的私有库CSDNModuleExample 并且当前版本为0.0.1,在我们想使用该组件的地方,在podfile中加入pod 'CSDNModuleExample', '~> 0.0.1',我们的私有库就成功接入了。
    PS:因为我们是私有库所以我们还要在podfile中添加我们的spec源
    source 'http://spec git的地址.git'

四、组件调用

当我们的工程打成多个组件后,或者我们为了打成单个组件而要进行解耦时,我们就需要一种解耦的组件调用方式,这样我们独立的组件能够相互调用,进行通信。
下一次,我们将开始工程解耦方面的工作。

猜你喜欢

转载自blog.csdn.net/zramals/article/details/81219721