【iOS 开发】Cocoapods 中多个本地库相互依赖的方法

栏目: IOS · 发布时间: 6年前

内容简介:先说一下这里讲的是本地库,并不是私有库,如果想了解最近公司项目需要以组件化的架构来重构项目,就是各个模块需要解耦拆分开来,利用至于如何给自己的模块代码添加
【iOS 开发】Cocoapods 中多个本地库相互依赖的方法

先说一下这里讲的是本地库,并不是私有库,如果想了解 Cocoapods 公共库或者私有库的支持方法可以看我的另一篇文章: 【iOS 开发】创建 podspec 文件,给自己写的框架添加 CocoaPos 支持

最近公司项目需要以组件化的架构来重构项目,就是各个模块需要解耦拆分开来,利用 Cocoapods 的管理,主工程只需要将各个模块 pod install 引入即可,开始想要以私有库的方式集成,但是公司项目涉及到多个客户定制开发,定制分支比较多,如果用私有库方式必定要创建多个 Git 仓库分开管理,这样分支管理以及维护成本都大大提高,所以考虑采用本地库的方式将各个模块集成,好处是各个模块的库不需要打 tag 上传至私有库,可以在主工程直接管理各个模块的代码,下面就记录一下遇到的问题。

至于如何给自己的模块代码添加 Cocoapods 支持我这边就不说了,不会的看上面贴出来的另一篇文章即可。

假设

我的项目工程一共分为以下几个组件:

TestProject
TestModule1
TestModule2

然后 测试主工程 需要依赖 测试组件1 ,而 测试组件1 又需要依赖 测试组件2 ,两个组件都是以本地库方式依赖,所以这里就涉及到 Cocoapods 本地库依赖本地库,因为是本地库并没有上传,所以在 podspec 中依赖时会出现找不到库的情况,下面就来说一下解决方法。

相互依赖的方法

测试组件2

由于 测试组件2 并不需要任何依赖,所以 podspec 如下:

Pod::Spec.new do |s|
 s.name = 'TestModule2'
 s.version = '1.0.0'
 s.summary = '测试组件2'
 s.homepage = 'xxx'
 s.license = { :type => 'MIT', :file => 'LICENSE' }
 s.author = { 'Jonzzs' => 'xxx' }
 s.source = { :git => '', :tag => s.version }
 s.platform = :ios
 s.ios.deployment_target = '9.0'
 s.swift_version = '4.2'
 s.source_files = 'TestModule2/*.swift'
end

测试组件1

由于 测试组件1 需要依赖 测试组件2 ,所以需要添加 s.dependency 依赖, podspec 如下:

Pod::Spec.new do |s|
 s.name = 'TestModule1'
 s.version = '1.0.0'
 s.summary = '测试组件1'
 s.homepage = 'xxx'
 s.license = { :type => 'MIT', :file => 'LICENSE' }
 s.author = { 'Jonzzs' => 'xxx' }
 s.source = { :git => '', :tag => s.version }
 s.platform = :ios
 s.ios.deployment_target = '9.0'
 s.swift_version = '4.2'
 s.source_files = 'TestModule1/*.swift'

 s.dependency 'TestModule2' # 这里需要依赖测试组件2
end

测试主工程

当测试主工程在 podfile 集成 测试组件1测试组件2 时,一般来说,因为 TestModule1 已经在 podspecs.dependency 依赖了 TestModule2 ,所以直接 pod 'TestModule1' 应该就会自动把 TestModule2pod 下来,但是因为两个组件都是本地库,所以 cocoapods 会找不到 TestModule2 这个本地库,这时候只要在 podfile 中将 TestModule2 也指明本地地址即可, podfile 如下:

platform :ios, '9.0'
target 'TestProject' do
 use_frameworks!

 pod 'TestModule1', :path =>'../TestModule1/'
 pod 'TestModule2', :path =>'../TestModule2/'

end

这里将 TestModule2 的地址也指明, pod 'TestModule1' 时就不会出现找不到依赖的情况。

将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

我的传送门: 博客简书 、微博 、 GitHub


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

银行3.0:移动互联时代的银行转型之道

银行3.0:移动互联时代的银行转型之道

[澳]布莱特·金(Brett King) / 白 宫 施 轶 / 广东经济出版社 / 2014-12 / 88.00元

银行未来会怎样,银行下一步该怎么做?银行如何在客户行为变化、科技变化,以及新的非银行竞争者不断涌入等时代变化的形势下,在未来取得成功? 这是第一本透彻深入地全面呈现当今银行业的内外形势与状况的书,内容涉及技术变化、客户行为变化、涌现的外部竞争者,银行现有组织架构、流程模式、制度思维、人员结构、互动渠道、营销方式等。具体包括低网点化,ATM、网站、呼叫中心的落伍,以及智能手机、社交媒体、移动支......一起来看看 《银行3.0:移动互联时代的银行转型之道》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具