最近公司项目开始推动模块化了,虽然iOS的多工程联编已经是一个老技术了,自己以前也做过简单的demo,但是在实际落地过程中还是遇到了很多奇奇怪怪的问题,在这里做一下总结和记录。首先会大概讲一下cocoapods实现模块化的一个大致原理和过程,然后会把自己在实现过程遇到的问题做一下记录。
目录
podspec文件中依赖系统framework和library的方法
cocoapods的结构
cocoapods可以理解成所有组件的管理者,管理方式是通过一个索引仓库(podspec库),所有想要加入cocoapods官方库的组件都要提供一个podspec文件,该文件即是该组件在cocoapods官方仓库中的唯一索引,同时源码仓库中的文件结构也要符合cocoapods的规定。当我们安装cocoapods时,会在我们的根目录下生成一个.cocoapods的文件夹,并将cocoapods的官方仓库克隆至该文件夹下,往后cocoapods会根据这个仓库中的索引文件将相应的组件集成进我们的工程中。
创建自己的组件库
之所以要创建我们自己的组件库,是因为模块化过程中,我们需要将不同的业务功能从主工程中剥离出来做成一个个静态库工程,然后将这些独立的业务功能模块以子工程的形式集成进主工程中,但是业务功能模块都需要用到的基础功能组件却不可能每个子工程都复制一份,比如自定义的相册、自定义的时间选择器、控制器基类等等,这些基础组件需要我们将其做成一个cocoapods私有库维护起来。
1.创建一个仓库,可以是git或者svn,都是可以的
2.使用pod命令创建私有库工程
pod lib create {你的私有库名称}
是否创建一个demo项目这个选项,建议选择yes。最终创建的私有库工程目录结构如下: