项目... xcodeproj无法打开,因为它缺少project.pbxproj文件

时间:2012-08-27 13:46:57

标签: ios xcode version-control project

我试图合并分支,导致错误“无法打开项目...无法打开,因为项目文件无法解析”。然后我尝试接受其他stackoverflow响应的建议(即编辑文件以删除损坏),但无法编辑该文件。看起来这实际上是一个目录,所以可能这个结构随着xcode的4.4版本而改变了,因为写了对Unable to open project... cannot be opened because the project file cannot be parsed的回复。

然后我尝试从我的时间机器备份中恢复myProject.xcodeproj。这不起作用,因为它说我没有访问myProject.xcodeproj的权限。我试图更改该目录的权限,但这没有帮助。

我关闭并重新打开xcode。现在错误是:

项目... xcodeproj无法打开,因为它缺少project.pbxproj文件

如何在xcode 4.4版中修复此问题?是否可以从xcode中的先前快照或存档或版本进行恢复。可以用时间机器恢复。我想避免重建整个项目。

8 个答案:

答案 0 :(得分:6)

最简单的事情可能是

  1. 从源代码管理中检出myProject.xcodeproj。这将包含导致您上次发生冲突的更改。
  2. 重做自上次提交源代码管理以来所做的项目更改
  3. 提交/推送到源代码管理。
  4. 将来,当您在项目文件中出现冲突时,请查看myProject.xcodeproj / project.pbxproj。通常,只是项目中的新文件已添加到同一位置。在这种情况下,您只需删除冲突元数据并解决冲突状态。

答案 1 :(得分:5)

最后,我要做的是

'cp -R ...TimeMachineBackup/myProject.xcodeproj ...myProjectArea/myProject.xcodeproj'

然后我必须在myProjectArea中执行以下操作:

git reset --merge

这允许我打开项目并将分支切换回我的主分支。

不是愉快的经历

答案 2 :(得分:2)

我能够在没有这样的命令行的情况下工作:

  1. 在Finder中转到Time Machine驱动器。
  2. 导航到所需的备份。
  3. 将其拖动到我想要的位置。这将抱怨无权访问.pbxproj
  4. 右键单击刚刚拖出的xcodeproj,选择“显示内容”。
  5. 右键单击Time Machine备份文件夹中的xcodeproj,选择“显示内容”。
  6. 将您在里面看到的.pbxproj拖到您刚创建的目标区域,并拖动#3。
  7. 现在应该可以了。

答案 3 :(得分:1)

对于其他人来看这个问题,我的案例中的原因是,git merge中的“冲突文本”已经悄悄进入实际文件:

<<<<<<< HEAD
                F0FDA2D61B99EB80007DB99D /* Aptron-mCollegix.xcassets */,
=======
                F08CFAAA1BC1E9EE00A5B6F5 /* Aptron-mCollegix.xcassets */,
>>>>>>> hotfix/Column_Text_Cut-off

在文本编辑器中打开project.pbxproj使修复变得容易。

答案 4 :(得分:0)

如果有人想找到丢失的project.pbxproj文件,则尝试使用一些代码编辑器打开.xcodeproj,您将在此处找到该文件。并请注意,我在另一台PC上备份了我的应用程序,因此我在那找到了该文件,因此您可能在某个地方备份了您的项目,以使其正常工作。

答案 5 :(得分:0)

发生这种情况的另一种方法是,如果您出于某种原因一直使用Pod或编辑器使用sudo-如果该文件存在于yourApp.xcodeprojectroj目录下,但xcode抱怨找不到它-请转到您的项目根目录并做:

sudo chown -R yourusername:staff ./*

答案 6 :(得分:0)

我找到了自己的解决方案。

导致此错误的原因是.xcodeproj文件缺少其包含的pbxproj文件,对吗?当您右键单击.xcodeproj文件并单击“显示包内容”时,通常会出现此内容。但是,根据您自己的情况,由于某些错误或其他git版本控制,它已被删除。

由于您不能真正生成.pbxproj文件,因此我找到的解决方案是转到原始项目文件夹位置,该位置是我用来创建存储库的位置。老实说,您也可以简单地创建一个新项目,只要它具有相同的包标识符!由于该项目的xcodeproj文件将正确包含.pbxproj文件,因此,用您自己的项目文件替换XCode环境中的文件将使.pbxproj文件能够基于这些文件进行更新。

因此,在XCode环境中打开此原始项目文件夹(/ new项目文件夹)之后,我随后删除了项目中的所有文件,并用我无法打开该项目的项目中的相应文件替换了它们。 xcodeproj文件。考虑到您只是复制了许多新文件,我不得不在这里和那里修复一些由此引起的错误,这些问题涉及构建阶段,而且这些工作没有排成一列。但是,在修复了一些小错误之后,位于这个新位置的同一项目最终无法运行!

最后,我采用了此项目的成功运行版本,并将所有文件,.xcodeproj文件,项目文件夹,测试文件及所有文件复制到原始存储库位置,然后从存储库中删除文件,以避免令人困惑的文件覆盖(如果您想安全起见,可以将旧的存储库文件剪切并粘贴到新位置,而不希望删除它们!)。然后从存储库位置在XCode中打开项目,在模拟器/设备上构建并运行该项目,以确保一切都准备就绪(并修复您可能需要的所有小错误),瞧!您的项目现在可以被提交,推送和运行了!

这不是最干净的解决方案,如果各个分支都已损坏,则可能必须在各个分支上做类似的事情。但是,如果您无权使用Mac时光机,而其他解决方案也无法满足您的要求,那么这可能是重新获得有效的.pbxproj文件的最直接的方法!

哦,我从gitignore中删除了.pbxproj。我不确定是否真的可以在您的gitignore中找到它,但是我建议您对这个主题进行自己的研究,不确定自己!

祝你好运!

答案 7 :(得分:0)

使用 xcodegen 库来避免这样的冲突。它有这些特点

  • ✅ 按需生成项目并从 git 中删除您的 .xcodeproj, 这意味着不再有合并冲突!
  • ✅ Xcode 中的组和文件是 始终同步到您磁盘上的目录
  • ✅ 轻松配置 人类可读且 git 友好的项目
  • ✅ 轻松复制和 无需在 Xcode 中编辑任何内容即可粘贴文件和目录
  • ✅ 使用构建设置在多个目标之间共享构建设置 团体
  • ✅ 自动生成不同环境的 Schemes 喜欢测试和生产
  • ✅ 使用以下工具轻松创建新项目 无需使用 Xcode 即可按需进行复杂设置
  • ✅ 从任何地方生成,包括 CI
  • ✅ 将您的规格分发给 多个文件,便于共享和覆盖
  • ✅轻松创建 多平台框架
  • ✅ 集成 Carthage 框架,无需任何 工作
  • ✅ 导出依赖关系图以在 Graphviz 中查看

https://github.com/yonaskolb/XcodeGen