上下文
我们正在开发一个大型软件平台,其中包括Android,服务器,Web和iOS(以及其他人)。为了使我们的所有代码保持最新状态,我们将它们全部保存在一个Master repo中(这非常重要,因为我们在所有平台上共享模型,因此提交可能会影响许多不同的平台)。
为了处理iOS方面,我们决定将项目分解为模块化pod,以便我们可以轻松地在其他库(也包括pod)中共享它们,这样当我们发布它时,对我们的客户来说很容易将我们的api包含在他们现有的项目中(即我们希望使用cocoapods结构来获得cocoapods提供的所有好处)。
为了实现这一目标,我已经为我们的每个项目设置了私有规格仓库和pod规格。
tl; dr :我们有一个主git repo,它包含我们所有的代码(多个平台,包括多个不同的pod)。我们希望保留此结构,但也能够从repo中的代码创建pod。
问题
我遇到的问题是我为pod规格找到的所有文档都说你必须使用这种格式:
spec.source = { :git => 'https://github.com/AFNetworking/AFNetworking.git',
:tag => spec.version.to_s }
是否可以执行以下操作:
spec.source = { :git => 'https://github.com/MyCompany/Master/MyCompanyCoreDir',
:tag => spec.version.to_s }
我们非常感谢任何帮助
干杯
靛蓝
答案 0 :(得分:16)
在单个Git存储库中可以有多个cocoapod。
正如您所说,您可以为每个导致特定pod代码的源指定不同的源。
为了实现这一点,您还必须在规范中设置正确的 source_files ,例如:s.source_files = 'SomePodDirectory/*.swift'
。
您甚至可以使用来源:s.source = { :git => 'https://github.com/MyCompany/Repository.git', :tag => 'SomePodName-v'+String(s.version) }
这样的内容管理每个广告连播的多个版本。
在这种情况下,您应该在Git上创建适当的标签(例如SomePodName-v1.0.0
)。
答案 1 :(得分:0)
您要查找的确切术语是podspec
文件中的 subspec 。在podspec
文件的 subspec 下,提及source_files
目录。
例如:
# SwiftStdlib Extensions
s.subspec 'SwiftStdlib' do |sp|
sp.source_files = 'Sources/Extensions/SwiftStdlib/*.swift'
end
# Foundation Extensions
s.subspec 'Foundation' do |sp|
sp.source_files = 'Sources/Extensions/Foundation/*.swift'
end
如果需要更多详细信息,只需检查SwifterSwift Podspec文件。