先说一下这里讲的是本地库,并不是私有库,如果想了解
Cocoapods公共库或者私有库的支持方法可以看我的另一篇文章:【iOS 开发】创建 podspec 文件,给自己写的框架添加 CocoaPos 支持 。最近公司项目需要以组件化的架构来重构项目,就是各个模块需要解耦拆分开来,利用
Cocoapods的管理,主工程只需要将各个模块pod install引入即可,开始想要以私有库的方式集成,但是公司项目涉及到多个客户定制开发,定制分支比较多,如果用私有库方式必定要创建多个Git仓库分开管理,这样分支管理以及维护成本都大大提高,所以考虑采用本地库的方式将各个模块集成,好处是各个模块的库不需要打tag上传至私有库,可以在主工程直接管理各个模块的代码,下面就记录一下遇到的问题。
至于如何给自己的模块代码添加 Cocoapods 支持我这边就不说了,不会的看上面贴出来的另一篇文章即可。
假设
我的项目工程一共分为以下几个组件:
- 测试主工程 (
TestProject) - 测试组件1 (
TestModule1) - 测试组件2 (
TestModule2)
然后 测试主工程 需要依赖 测试组件1 ,而 测试组件1 又需要依赖 测试组件2 ,两个组件都是以本地库方式依赖,所以这里就涉及到 Cocoapods 本地库依赖本地库,因为是本地库并没有上传,所以在 podspec 中依赖时会出现找不到库的情况,下面就来说一下解决方法。
相互依赖的方法
测试组件2
由于 测试组件2 并不需要任何依赖,所以 podspec 如下:
Pod::Spec.new do |s| |
测试组件1
由于 测试组件1 需要依赖 测试组件2 ,所以需要添加 s.dependency 依赖, podspec 如下:
Pod::Spec.new do |s| |
测试主工程
当测试主工程在 podfile 集成 测试组件1 和 测试组件2 时,一般来说,因为 TestModule1 已经在 podspec 中 s.dependency 依赖了 TestModule2 ,所以直接 pod 'TestModule1' 应该就会自动把 TestModule2 也 pod 下来,但是因为两个组件都是本地库,所以 cocoapods 会找不到 TestModule2 这个本地库,这时候只要在 podfile 中将 TestModule2 也指明本地地址即可,podfile 如下:
platform :ios, '9.0' |
这里将 TestModule2 的地址也指明,pod 'TestModule1' 时就不会出现找不到依赖的情况。