如何使用嵌套的git子模块创建CocoaPod?

Rob*_*Rob 22 git git-submodules cocoapods

我正在尝试使用嵌套的git子模块创建一个CocoaPod.我可以创建pod,但是,我无法完全安装它.

当我运行时,pod install --verbose我可以看到git submodule update --init正在运行而不是git submodule update --init --recursive没有拉动嵌套的子模块.

CocoaPods是否支持嵌套子模块,或者不支持?我已经在网上搜索潜在的潜在客户,但找不到任何东西!

我还应该提到我lint传递pod lib lint但不pod spec lint. pod spec lint抱怨它无法在嵌套子模块中找到头文件.我不确定这是否与上述问题有关.

(另请注意,我正在研究的这个特定的Pod只是一个概念证明.我将创建一个更复杂的Pod,它依赖于socket.IO-objc.不幸的是socket.IO-objc不能用作Pod ,并依赖于SocketRocket作为子模块.)

这是我的PodSpec:

Pod::Spec.new do |s|
  s.name             = "DebugTools"
  s.version          = "0.1.0"
  s.summary          = "Awesome tools for debugging iOS apps."
  s.homepage         = "https://github.com/robertcrabtree/DebugTools"
  s.license          = 'MIT'
  s.author           = { "Robert Crabtree" => "me@gmail.com" }
  s.source           = { :git => "https://github.com/robertcrabtree/DebugTools.git", :tag => s.version.to_s, :submodules => true }

  s.platform     = :ios, '7.0'
  s.requires_arc = true

  s.source_files = 'Pod/Classes/**/*', 'Pod/Submodules/LogMaster/LogMaster/*.{h,m}', 'Pod/Submodules/LogMaster/LogMaster/LogCore/*.h'
  s.resource_bundles = {
    'DebugTools' => ['Pod/Assets/*.png']
  }
end
Run Code Online (Sandbox Code Playgroud)

这是我的Podfile:

pod "DebugTools", :git => "https://github.com/robertcrabtree/DebugTools.git", :submodules => true
Run Code Online (Sandbox Code Playgroud)

Eug*_*rov 1

我相信 CocoaPods 的创建正是为了避免使用 GIT 子模块

\n

这是很酷的解释:https://roadfiresoftware.com/2013/05/a-case-for-switching-to-cocoapods-from-git-submodules/

\n
\n

让\xe2\x80\x99s 说你的项目依赖于AFNetworking。您将其添加为 git\n子模块,然后,有一天,由于不可抗力(或者仅仅因为\n作者的感受),AFNetworking 从其在 GitHub 上\n的主页中消失。它\xe2\x80\x99都消失了,消失在稀薄的空气中。现在,当新人克隆您的项目存储库时,他们运行 git submodule update --init \xe2\x80\xa6 并且失败。所以现在他们可以\xe2\x80\x99t 构建项目。你\xe2\x80\x99d最好也\n小心,因为如果你丢失了AFNetworking源代码,你\n可以\xe2\x80\x99t构建\xe2\x80\xa6

\n

所以现在我们使用 CocoaPods,并将每个依赖项的源推送到\n我们的中央存储库。现在,当有人 git 克隆一个存储库时,他们会获得所需的所有代码,并且可以很好地构建项目。他们\xe2\x80\x99t\n甚至不需要CocoaPods来构建应用程序\xe2\x80\x93它就可以工作。

\n
\n

因此,让 CocoaPods 完成它的工作。\nCocoaPods 管理 Xcode 项目的依赖项。(c) https://github.com/CocoaPods/CocoaPods

\n