内容简介:先说一下这里讲的是本地库,并不是私有库,如果想了解最近公司项目需要以组件化的架构来重构项目,就是各个模块需要解耦拆分开来,利用至于如何给自己的模块代码添加
先说一下这里讲的是本地库,并不是私有库,如果想了解 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 已经在 podspec 中 s.dependency 依赖了 TestModule2 ,所以直接 pod 'TestModule1' 应该就会自动把 TestModule2 也 pod 下来,但是因为两个组件都是本地库,所以 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' 时就不会出现找不到依赖的情况。
将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
- .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
- 浅析依赖倒转、控制反转、IoC 容器、依赖注入。
- Angular 4 依赖注入教程之五 FactoryProvider配置依赖对象
- Gradle构建SpringBoot程序依赖管理之依赖版本自动控制
- Maven学习笔记七【可选的依赖项和依赖项排除】
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
XML Hacks
Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95
Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!