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

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

内容简介:先说一下这里讲的是本地库,并不是私有库,如果想了解最近公司项目需要以组件化的架构来重构项目,就是各个模块需要解耦拆分开来,利用至于如何给自己的模块代码添加
【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


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

查看所有标签

猜你喜欢:

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

Text Processing in Python

Text Processing in Python

David Mertz / Addison-Wesley Professional / 2003-6-12 / USD 54.99

Text Processing in Python describes techniques for manipulation of text using the Python programming language. At the broadest level, text processing is simply taking textual information and doing som......一起来看看 《Text Processing in Python》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具