如何创建包含其他 pods 的 Pod

How can I create Pod that incorporates other pods

我有一个 Pods 的集合,它们构成了基本通用的自定义扩展,类 我在我的应用程序之间共享。

现在这些都是我的 Podfile 的一部分

  pod 'AuthUtils', :git => 'https://github.com/xxxxx/AuthUtils.git', :tag => '4.2'

  pod 'AutoLayoutUtils', :git => 'https://github.com/xxxxx/AutoLayoutUtils.git', :tag => '2.5'

我想将它们组合到一个通用的 Utils Pod 中,例如

pod 'MyAppUtils', :git => 'https://github.com/xxxxx/MyAppUtils.git', :tag => '1.0'

能够使用 MyAppUtils 安装所有内容,但也可以只安装一些模块,例如

pod 'MyAppUtils/AuthUtils', :git => 'https://github.com/xxxxx/MyAppUtils.git', :tag => '1.0'

例如,我在 https://github.com/SwifterSwift/SwifterSwift and https://github.com/mxcl/PromiseKit 中看到过这种行为,但我不明白如何实施这种方法。

您可以使用 subspecs 来实现。您可以转到实施 subspecs 的项目并找到其 podspec 文件作为参考,或者您可以在 CocoaPods Specs Guide

中找到更多信息

这是一个子规格的例子:

  s.subspec 'SwiftStdlib' do |sp|
    sp.source_files  = 'Sources/Extensions/SwiftStdlib/*.swift'
  end

这些格式为"Project/Subproject"的子项目称为CocoaPods Subspecs。这些是具有特定源文件夹的子项目。

在 CocoaPods 网站上,假设您的 AuthUtils 代码位于 Sources/AuthUtils 文件夹中,您可以将以下内容添加到 MyAppUtils 的 Podfile 中:

subspec 'AuthUtils' do |sp|
  sp.source_files = 'Sources/AuthUtils'
end

发布后,您现在应该可以使用

安装 pod

pod 'MyAppUtils/AuthUtils', :git => 'https://github.com/xxxxx/MyAppUtils.git', :tag => '1.0'