CocoaPods:如何让多个工作空间引用相同的窗格

问题描述:

我有几个Xcode工作空间,每个工作空间都包含多个项目。这些工作区中的项目是相关的,需要引用几个相同的CocoaPods。CocoaPods:如何让多个工作空间引用相同的窗格

我想创建一个共同的目录在其中,我可以下载每次使用吊舱的一个副本,但我无法弄清楚如何建立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 

这几乎是卓有成效的。它只下载一次该容器,并将其放在该文件下的共享目录中。 唯一的问题是它会更新BarWorkspace,使其不仅包含BarProject和Pods项目,还包含FooProject。 podfile中引用的第一个项目/工作区正常工作。

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

我如何从不同的工作空间引用相同的podfiles项目?

+0

为什么你需要不同的工作空间才能拥有相同的豆荚?你有自己的代码,你也使用所有这些豆荚的项目之间共享,或者其他原因? – rjpadula

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

它似乎没有,你可以创建适用于多个工作区一个podfile。但是我越想越想,也许这就是它应该的样子。

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

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

如果你有一个紧密链接的项目集合,你可以保证它们都使用完全相同的每个pod的版本,那么将这些项目放到一个工作区中也许是有意义的。这就是我最终做的。

我可能是错的一些细节,如果是这样我会欢迎更正。我希望这篇文章对于其他人开始使用CocoaPods有用。