如何处理多模块 iOS Cocoapods 项目中的依赖关系?

Den*_*sna 5 ios cocoapods swift

我目前正在使用 Cocoapods 构建一个多模块 iOS 项目,并面临依赖管理的挑战。我的产品结构如下:

app/
|-- SampleApp/
|-- Podfile
sdk/
|-- Module 1/
|-- Module 2/
|-- Module 3/
|-- Module 4/
|-- Module 5/
Run Code Online (Sandbox Code Playgroud)

每个模块都有自己的 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
Run Code Online (Sandbox Code Playgroud)

当我在“pod install”后打开工作区时,单个模块目标不可构建,因为找不到“Alamofire”等依赖项。我还必须将依赖项添加到 Podfile 才能运行目标。

所以我的问题是,如何以正确的方式管理这些多模块依赖项。有没有最佳实践?我真的不想在每个 podspec 和 Podfile 中声明依赖项。最好的情况是每个模块都可以单独构建和测试,并且可以使用所有模块完全自动化地构建和测试工作区。由于我主要来自 Java 世界,因此我正在 Maven 中寻找诸如 BOM(物料清单)导入之类的东西来进行依赖管理。

感谢您的任何帮助和建议。也许有一些很好的示例项目可以看看它是如何正确完成的。我找到了 Google Firebase iOS SDK,但是这个项目有点太大并且是定制的。那里的示例项目非常小。