CocoaPods:我如何让多个工作区引用相同的pod

时间:2017-08-15 00:54:50

标签: ios cocoapods

我有几个Xcode工作区,每个工作区包含几个项目。这些工作空间中的项目是相关的,需要引用几个相同的CocoaPods。

我想创建一个公共目录,我可以在其中下载我使用的每个pod的一个副本,但是我无法弄清楚如何设置podfile以便它独立地处理每个工作区。发生的情况是,当两个工作空间被命名时,第二个工作空间将获得两个非pod项目。

为简化起见,我创建了两个简单的项目,FooProject和BarProject,每个项目都包含在自己的工作区(FooWorkspace和BarWorkspace)中。为清楚起见,我的目录结构如下所示:

+ Common
  - Podfile
  - Podfile.lock
  + Pods

+ Workspace1
  - FooProject.xcodeproj
  - FooWorkspace.xcworkspace

+ Workspace2
  - BarProject.xcodeproj
  - BarWorkspace.xcworkspace

这是我的podfile:

# Uncomment this line to define a global platform for your project
platform :ios, '8.0'

def common_pods
  pod "ConsoleBanner"
end

target 'FooProject' do
  project '../Workspace1/FooProject.xcodeproj'
  workspace '../Workspace1/FooWorkspace.xcworkspace'
  common_pods
end

target 'BarProject' do
  project '../Workspace2/BarProject.xcodeproj'
  workspace '../Workspace2/BarWorkspace.xcworkspace'
  common_pods
end

这几乎可以解决问题。它只下载一次pod并将其放在该文件下的共享目录中。 唯一的问题是它更新BarWorkspace不仅包括BarProject和Pods项目,还包括FooProject。 podfile中引用的第一个项目/工作区正常工作。

我尝试在目标块中添加inherit! :none,但它没有任何效果。我还考虑在同一目录中创建单独的podfiles作为对等体,但似乎podfile必须被命名为podfile

如何让来自不同工作空间的项目引用相同的podfile?

1 个答案:

答案 0 :(得分:1)

我将根据过去几天的研究工作回答我自己的问题。希望这在某些时候对其他人有用。

您似乎无法创建适用于多个工作区的podfile。但我想的越多,也许这就是应该的样子。

一个podfile映射到一组pod。每个pod都有一个特定的版本号。据推测,您可能要处理的不同项目可能需要不同版本的相同pod。例如,假设Project 1使用Pod X 3.0版。但是,由于遗留的要求,Project 2不能使用Pod X的3.0版本,而是必须使用2.0版本。

在这种情况下,您需要两个不同的podfiles,每个podfiles指向完全不同的pod集合。

如果你有一个链接如此紧密的项目集合,你可以保证他们都使用他们所依赖的每个pod的完全相同的版本,那么将这些项目全部放在一个工作区中是有意义的。这就是我最终做的事情。

我对其中的一些细节可能有误,如果有的话我会欢迎更正。我希望这篇文章对其他人开始使用CocoaPods非常有用。