ios - 如何处理多模块 iOS Cocoapods 项目中的依赖关系?
问题描述
我目前正在使用 Cocoapods 构建一个多模块 iOS 项目,并面临依赖管理的挑战。我的产品结构如下:
app/
|-- SampleApp/
|-- Podfile
sdk/
|-- Module 1/
|-- Module 2/
|-- Module 3/
|-- Module 4/
|-- Module 5/
每个模块都有自己的 podspec 文件,其中使用特定版本描述依赖关系。一些模块依赖于其他模块,也被描述为依赖项,但没有版本,因为我总是想要最新的。
我在 Podfile 中这样描述项目:
platform :ios, '11.0'
use_frameworks!
workspace 'SampleAppWorkspace'
project 'SampleApp/SampleApp.xcodeproj'
target 'SampleApp' do
use_frameworks!
project 'SampleApp/SampleApp.xcodeproj'
target 'SampleAppTests' do
inherit! :search_paths
end
target 'SampleAppUITests' do
inherit! :search_paths
end
end
target 'Module 5' do
use_frameworks!
project '../sdk/Module 5/Module 5.xcodeproj'
end
target 'Module 4' do
use_frameworks!
project '../sdk/Module 4/Module 4.xcodeproj'
target 'Module 4 Tests' do
end
end
target 'Module 3' do
use_frameworks!
project '../sdk/Module 3/Module 3.xcodeproj'
end
target 'Module 2' do
use_frameworks!
project '../sdk/Module 2/Module 2.xcodeproj'
target 'Module 2 Tests' do
end
end
target 'Module 1' do
use_frameworks!
project '../sdk/Module 1/Module 1.xcodeproj'
end
当我在“pod install”之后打开工作区时,单个模块目标无法构建,因为找不到像“Alamofire”这样的依赖项。我还必须将依赖项添加到 Podfile 以使目标运行。
所以我的问题是,如何以正确的方式管理这些多模块依赖项。有没有最佳实践?我真的不想在每个 podspec 和 Podfile 中声明依赖项。最好的情况是每个模块都可以单独构建和测试,并且可以使用所有模块完全自动化地构建和测试工作区。因为我主要来自 Java 世界,所以我正在 Maven 中寻找类似 BOM(物料清单)导入的东西来进行依赖管理。
感谢您的任何帮助和建议。也许有一些很好的示例项目来看看它是如何正确完成的。我找到了 Google Firebase iOS SDK,但这个项目有点过于庞大和定制。那里的示例项目非常小。
解决方案
推荐阅读
- java - 获取 NoSuchElementException:没有这样的元素:无法找到元素
- node.js - 错误:找不到模块“aws-api-gateway-client”
- c# - 如何在 C# 中调用带有字符串变量的函数
- bash - shell 脚本从数组中声明关联变量
- objective-c - Xcode 是否有类似于 IntelliJ 的“生成构造函数”的“生成初始化程序”命令?
- javascript - 我的 React Typescript 计数器中的逻辑 NaN 错误以获取胜率
- python-3.x - 使用 boto3 过滤掉 AutoScalingGroupName 中包含字符串的 ASG
- c# - 从 jquery ajax 请求调用 Post 操作方法
- c - Boyer Moore 替换不止一种模式
- java - 如何处理 Spring 项目中的异常?