当框架具有外部依赖项时,如何将 iOS 框架导入为 git 子模块

How to import an iOS framework as a git submodule, when the framework has external dependencies

您有主项目“App”及其自己的 Git 存储库;您再次使用自己的 Git 存储库将模型分离到一个单独的框架项目“AppKit”中。 “AppKit”作为 Git 子模块导入到“App”中,一切都很顺利。

如果“AppKit”具有外部依赖项——假设由 CocoaPods 管理,则典型的导入为子模块会失败,因为“App”不满足“AppKit”的依赖项。 我想知道在将“AppKit”作为 Git 子模块导入时是否有任何方法可以实现这一点。可以吗?

我知道有几个简单的解决方案 -

  1. 使“AppKit”成为“Carthage”可用的框架并导入它
  2. 制作并导入“AppKit”作为 CocoaPod。

我只是想要一个明确的答案(以防它不能作为 Git 子模块完成)所以我可以继续前进。

背景:追求管理多项目应用程序的理想解决方案(欢迎提出其他想法/意见)

让问题更清晰 --

iOS 框架项目如果有自己的依赖项,是否可以作为 Git 子模块导入。 如果子依赖是--

  1. 椰子类动物
  2. 迦太基
  3. Git 子模块

git submodule 本身,作为 Git 命令的一部分,没有 CocoaPod 依赖关系的概念。

Cocoa 依赖管理器本身确实有这种依赖的概念,声明为子模块,并照此管理 since CocoadPod 0.1.20 (as explained here)。

这意味着:如果 AppKit 本身是一个 CocoaPod,它可以将自己的依赖项声明为 Git 子模块,并且 CocoaPod 将管理(加载)它们,前提是您自己的项目使用 :submodules => true

请求上述依赖项
s.source   = { :git => 'https://github.com/<you>/AppKit.git', :tag => "2.1.0", :submodules => true }

所以:

Can an iOS framework project be imported as a Git Submodule if it has dependencies of its own.

如果该项目作为 CocoaPod 导入,如果这些是 git 子模块,Cocoa 依赖项管理器可以处理导入的项目依赖项。
但是,如果导入的项目只是一个 Git 子模块(而不是 declared/imported 作为 CocoaPod),Git 本身不会将所述依赖项管理为“Cocoa Pod”(因为它对 XCode 项目依赖关系一无所知)。