我有几个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?
答案 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非常有用。