19

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

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

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

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

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

4

8 回答 8

7

最简单的事情可能是

  1. 从源代码管理中签出 myProject.xcodeproj。这将包含上次导致您发生冲突的更改。
  2. 重做自上次提交源代码控制以来所做的项目更改
  3. 提交/推送到源代码控制。

将来,当您在项目文件中遇到冲突时,请查看 myProject.xcodeproj/project.pbxproj。通常只是项目中的新文件被添加到同一个地方。在这种情况下,您只需要删除冲突元数据并解决冲突状态。

于 2012-08-27T13:56:33.387 回答
6

最后,我必须做的是

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

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

git reset --merge

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

不是一次愉快的经历

于 2012-08-27T16:02:34.917 回答
3

另一种可能发生的情况是,如果您出于某种原因在 pod 或编辑器中使用 sudo - 如果文件存在于 yourApp.xcodeprojectroj 目录下但 xcode 抱怨找不到它 - 转到您的项目根目录并执行以下操作:

sudo chown -R yourusername:staff ./*
于 2018-11-07T12:59:27.323 回答
2

我能够在没有这样的命令行内容的情况下完成这项工作:

  1. 转到 Finder 中的 Time Machine 驱动器。
  2. 导航到所需的备份。
  3. 将它拖到我想要的位置。这将抱怨没有访问 .pbxproj 的权限
  4. 右击刚刚拖出来的xcodeproj,选择“Show Contents”。
  5. 右键单击 Time Machine 备份文件夹中的 xcodeproj,选择“显示内容”。
  6. 将您在内部看到的 .pbxproj 拖动到您刚刚使用 #3 中的拖动创建的目标。

现在它应该可以工作了。

于 2013-09-03T14:45:07.017 回答
2

对于其他关注这个问题的人来说,我的原因是,来自 git merge 的“冲突文本”已经潜入实际文件:

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

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

于 2015-10-08T20:43:06.103 回答
0

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

于 2018-09-20T08:28:02.983 回答
0

我找到了自己的解决方案来解决这个问题。

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

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

因此,在打开这个原始项目文件夹(/new project folder)后,在XCode环境中,我将项目中的所有文件都删除了,并将它们替换为我项目中无法打开xcodeproj文件的相应文件. 鉴于您刚刚复制了一堆新文件,我不得不在这里和那里修复一些由此产生的错误,涉及构建阶段的东西等等。但是在修复了一些小错误之后,这个新位置的同一个项目最终能够运行没有问题!

最后,我拿了这个成功运行的项目版本,并将所有文件,.xcodeproj 文件,项目文件夹,测试文件和所有文件复制到原始存储库位置,事先从存储库中删除文件以避免混淆覆盖文件(如果您想安全,可以将旧的存储库文件剪切并粘贴到新位置,不要想删除它们!)。然后从存储库位置在 XCode 中打开项目,在您的模拟器/设备上构建并运行它,以确保一切正常(并修复您可能需要的任何小错误),瞧!您的项目现在可以提交、推送和运行!

这不是最干净的解决方案,如果各个分支都已损坏,您可能必须在各个分支上执行类似的操作。但是,如果您无法访问 Mac 时间机器,并且其他解决方案对您不起作用,那么这可能是再次拥有工作 .pbxproj 文件的最直接方法!

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

祝你好运!

于 2019-11-30T00:50:11.127 回答
-1

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

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

https://github.com/yonaskolb/XcodeGen

于 2021-06-27T20:59:16.437 回答