我的工作区结构如下:
-ProjectA
--ProjectB
--ProjectC
-Pods
我运行了'< pod;更新'我得到的是什么
-ProjectA
--ProjectB
--ProjectC
-Pods
-ProjectB< - 这不应该在这里!
我的Podfile是:
platform :ios, '7.0'
inhibit_all_warnings!
workspace 'ProjectA'
target :ProjectA do
pod "AFNetworking", "~> 2.0"
pod 'Facebook-iOS-SDK'
pod 'SDWebImage'
pod 'FXBlurView'
pod 'RESideMenu'
pod 'RBStoryboardLink'
end
target :ProjectBTests do
xcodeproj 'Libraries/ProjectB/ProjectB'
pod 'Expecta'
pod 'Specta'
pod 'OCMock'
end
那么有可能对这种行为做任何事情吗?
谢谢!
答案 0 :(得分:1)
请将其注册为coocoapods中的错误。 生成的xcworkspace文件不正确。
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:ProjectA.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
<FileRef
location = "group:ProjectA/ProjectB/ProjectB.xcodeproj">
</FileRef>
</Workspace>
答案 1 :(得分:1)
将此行替换为lib/cocoapods/installer/user_project_integrator.rb
#create_workspace
:
new_file_references = file_references - workspace.file_references
显示以下代码:
new_file_references = file_references - workspace.file_references
absolute_paths = workspace.file_references.map { |fr| fr.absolute_path(workspace_path) }
new_file_references = new_file_references.select { |fr| absolute_paths.include? fr.absolute_path(workspace_path) }
基本上使用绝对路径来过滤已经添加到工作空间中的项目。
答案 2 :(得分:0)
TLDR :这是用户的工作区错误。要解决此问题,只需在文本编辑器中打开工作区的contents.xcworkspacedata
并简化所有相对路径。例如。 OMGNotExistingDirectory/../FirstLibrary/FirstLibrary.xcodeproj
现在应该看起来像FirstLibrary/FirstLibrary.xcodeproj
因此,有时在工作区中重新布置项目时,contents.xcworkspacedata
可能会像这样结束:
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:App/App.xcodeproj">
</FileRef>
<FileRef
location = "group:OMGNotExistingDirectory/../FirstLibrary/FirstLibrary.xcodeproj">
</FileRef>
<FileRef
location = "group:SecondLibrary/SecondLibrary.xcodeproj">
</FileRef>
<FileRef
location = "group:ThirdLibrary/ThirdLibrary.xcodeproj">
</FileRef>
</Workspace>
看到OMGNotExistingDirectory/../FirstLibrary/FirstLibrary.xcodeproj
吗?是的,就是这个问题。即使路径中的文件夹不再存在,路径的/..
部分也允许XCode忽略它,并且可以正常工作。
现在我们运行pod install
。这里的问题是,当CocoaPods重新组装工作区时,它会比较相对路径而不是绝对以避免重复。而且,FirstLibrary/FirstLibrary.xcodeproj
当然不是OMGNotExistingDirectory/../FirstLibrary/FirstLibrary.xcodeproj
,即使它们指向的是同一文件。
因此,要解决此问题,您必须通过删除工作空间中的多余路径来简化它们之间的相对路径。
感谢kezi给出问题根源的答案。