首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CocoaPods将重复项目添加到xcworkspace

CocoaPods将重复项目添加到xcworkspace
EN

Stack Overflow用户
提问于 2014-08-19 23:36:44
回答 3查看 1.5K关注 0票数 14

我的工作区结构如下:

-ProjectA

--项目B

--项目C

-Pods

我运行“pod update”,得到的结果是

-ProjectA

--项目B

--项目C

-Pods

-ProjectB <-这不应该出现在这里!

我的Podfile是:

代码语言:javascript
复制
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

那么,有没有可能对这样的行为做任何事情呢?

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2014-09-29 01:50:55

请在coocoapods中将其注册为bug。生成的xcworkspace文件不正确。

代码语言:javascript
复制
<?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
EN

Stack Overflow用户

发布于 2019-01-23 22:43:03

已在lib/cocoapods/installer/user_project_integrator.rb #create_workspace中替换此行

代码语言:javascript
复制
new_file_references = file_references - workspace.file_references

使用下面的代码:

代码语言:javascript
复制
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)  }

基本上使用绝对路径来过滤已经添加到工作区的项。

票数 1
EN

Stack Overflow用户

发布于 2019-01-31 16:58:54

TLDR__:这是用户的工作区错误。要解决这个问题,只需在文本编辑器中打开工作区的contents.xcworkspacedata并简化所有相对路径即可。例如,OMGNotExistingDirectory/../FirstLibrary/FirstLibrary.xcodeproj现在应该看起来像FirstLibrary/FirstLibrary.xcodeproj

因此,有时在工作区中重新排列项目时,您的contents.xcworkspacedata可能会像这样结束:

代码语言:javascript
复制
<?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的回答,它提供了问题所在的线索。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25387499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档