我有一个大型工作区,我想使用基础,使用它的代码在其上创建另一个项目。 我不想直接在代码上工作,而是想用myPodProject创建另一个项目myProject,这样我就可以访问他们的代码和他们的pod,并独立添加我的代码和pod。
原始结构:
CoreApp
|
+-- CoreApp.xcworkspace
|
+-- CoreProject.xcodeproj
+-- Pods.xcodeproj
我所做的是用我的项目创建自己的工作区,将所有核心项目拖入工作区,并使用“标题搜索路径”指向核心项目。
所以新结构是:
MyApp
|
+-- MyApp.xcworkspace
|
+-- MyProject.xcodeproj
+-- CoreProject.xcodeproj
+-- Pods.xcodeproj
直到这里一切都很好。
现在,我想拥有自己的豆荚。但似乎在同一个工作区中有2个Pods.xcodeproj是一个问题。
我该怎么办呢?
MyApp
|
+-- MyApp.xcworkspace
|
+-- CoreProject.xcodeproj
+-- CorePods.xcodeproj
+-- MyPods.xcodeproj
+-- MyProject.xcodeproj
答案 0 :(得分:3)
更新:可以有两个" Pods.xcodeproj"在相同的工作区中,但不可能将它们放在同一个目录中。
如果你结账" CoreProject"进入" MyProject"的子目录,您可以在两个目录中执行pod install
" MyProject"和" CoreProject"。通过这种方式,两个项目都可以拥有自己的" Pods.xcodeproj"。
这是执行后的文件结构。
MyProject
├── MyProject
├── MyProject.xcodeproj
├── MyProject.xcworkspace
├── Podfile
├── Podfile.lock
├── Pods
│ └── Pods.xcodeproj
└── CoreProject
├── Core.m
├── CoreProject
├── CoreProject.xcodeproj
├── CoreProject.xcworkspace
├── Podfile
├── Podfile.lock
└── Pods
└── Pods.xcodeproj
最后,您应该执行以下步骤。
不要使用" CoreProject.xcworkspace"编辑" MyProject"。
这是这种情况下的项目结构。
MyProject.xcworkspace
|
+-- MyProject.xcodeproj
+-- Pods.xcodeproj (for MyProject)
+-- CoreProject.xcodeproj
+-- Pods.xcodeproj (for CoreProject)
如果您可以触摸CoreProject的Pod,则以下解决方案是合适的。
你应该创建一个新的" Pods.xcodeproj"并与" MyProject"分享和" CoreProject"。
项目结构如下所示(与您的"新结构"相同,但是pods被新的替换)。
MyApp
|
+-- MyApp.xcworkspace
|
+-- MyProject.xcodeproj
+-- CoreProject.xcodeproj
+-- Pods.xcodeproj (your own)
这是工作区的Podfile示例。 如果您链接" CoreProject"来自" MyProject",在这种情况下,您可以使用" AFNetworking"在这两个项目中,但可以使用" SDWebImage"仅在" MyProject"。
<强> Podfile 强>
workspace 'MyApp'
xcodeproj 'CoreProject.xcodeproj'
xcodeproj 'MyProject.xcodeproj'
target "CoreProject" do
pod 'AFNetworking'
xcodeproj 'CoreProject.xcodeproj'
end
target "CoreProjectTests", :exclusive => true do
pod 'OCMockito'
xcodeproj 'CoreProject.xcodeproj'
end
target "MyProject" do
pod 'SDWebImage'
xcodeproj 'MyProject.xcodeproj'
end
target "MyProjectTests", :exclusive => true do
pod 'OCHamcrest'
xcodeproj 'MyProject.xcodeproj'
end
答案 1 :(得分:0)
作为xiongmaomaomao答案的补充,如果你的第二个项目(在这种情况下,假设是CoreProject)存在于另一个目录(与MyProject和你的Podfile分开)并且你想使用一个pod(例如OCMockito,用于单元测试) )在这两个项目中,你需要在你的Podfile中做这样的事情:
def mockito_shared_pod
pod 'OCMockito', '~> 3.0'
end
target "MyProjectTests" do
inherit! :search_paths
mockito_shared_pod
end
target "CoreProjectTests" do
mockito_shared_pod
xcodeproj '../<path_to_proj_file>/CoreProject.xcodeproj'
end
正如您所看到的,重要的是为每个项目定义2个目标,对于与MyProject / Podfile目录中不存在的项目相关联的目标,您需要通过添加项目来指定项目的位置xcodeproj
值。
mockito_shared_pod
定义不是必需的,但它避免了必须指定pod两次(每个目标一次)。
我发布这个是因为xiongmaomaomao的答案非常有帮助,但我需要做一些不同的事情以适应我的不寻常案例,也许其他人会遇到与我相同的问题。