项目 ...xcodeproj 无法打开,因为它缺少其 project.pbxproj 文件
Posted
技术标签:
【中文标题】项目 ...xcodeproj 无法打开,因为它缺少其 project.pbxproj 文件【英文标题】:Project ...xcodeproj cannot be opened because it is missing its project.pbxproj file 【发布时间】:2012-08-22 00:25:41 【问题描述】:我尝试合并分支,结果出现错误“无法打开项目...无法打开,因为无法解析项目文件”。然后我尝试接受其他 *** 响应的建议(即编辑文件以删除损坏),但无法编辑文件。看起来这实际上是一个目录,所以它的结构可能随着 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 中的先前快照或存档或版本中恢复?能不能用时光机恢复。我想避免重建整个项目。
【问题讨论】:
【参考方案1】:最简单的可能就是
-
从源代码管理中签出 myProject.xcodeproj。这将包含上次导致您发生冲突的更改。
重做自上次提交源代码管理以来所做的项目更改
提交/推送到源代码控制。
将来,当您在项目文件中遇到冲突时,请查看 myProject.xcodeproj/project.pbxproj。通常只是项目中的新文件被添加到同一个地方。在这种情况下,您只需要删除冲突元数据并解决冲突状态即可。
【讨论】:
boxel,我尝试了以下(Jeffs-iMac$ /usr/local/git/bin/git checkout myProject.xcodeproj),但得到以下错误。我对git一无所知。你能提供进一步的建议吗?错误:路径“myProject.xcodeproj/project.pbxproj”未合并 我也不是专家,但我会尝试“git reset myProject.xcodeproj/project.pbxproj”,然后是“git checkout myProject.xcodeproj/project.pbxproj”。但首先,将整个目录结构备份到某个地方,以确保您可以恢复到某些内容。 盒装,谢谢。我没有机会尝试你的最后一个建议。相反,我按照我在自己的答案中发布的步骤操作,使用 unix cp 命令恢复目录。不过感谢您抽出宝贵时间回答我的问题。【参考方案2】:最后,我要做的是
'cp -R ...TimeMachineBackup/myProject.xcodeproj ...myProjectArea/myProject.xcodeproj'
然后我必须在 myProjectArea 中执行以下操作:
git reset --merge
这允许我打开项目并将分支切换回我的主分支。
不是一次愉快的经历
【讨论】:
【参考方案3】:我能够在没有这样的命令行内容的情况下完成这项工作:
-
在 Finder 中转到 Time Machine 驱动器。
导航到所需的备份。
将它拖到我想要的位置。这将抱怨没有访问 .pbxproj 的权限
右击刚刚拖出的xcodeproj,选择“显示内容”。
右键单击 Time Machine 备份文件夹中的 xcodeproj,选择“显示内容”。
将您在内部看到的 .pbxproj 拖动到您刚刚使用 #3 中的拖动创建的目标。
现在应该可以了。
【讨论】:
【参考方案4】:对于其他关注这个问题的人来说,我的原因是,来自 git 合并的“冲突文本”已经潜入实际文件:
<<<<<<< HEAD
F0FDA2D61B99EB80007DB99D /* Aptron-mCollegix.xcassets */,
=======
F08CFAAA1BC1E9EE00A5B6F5 /* Aptron-mCollegix.xcassets */,
>>>>>>> hotfix/Column_Text_Cut-off
在文本编辑器中打开 project.pbxproj 使修复变得容易。
【讨论】:
从这里删除什么? 对不起,我没有经常使用这个帐户。最后的“.xcassets”行很好,其余的都是不应该在文件中的差异。【参考方案5】:如果有人想找到丢失的 project.pbxproj 文件,请尝试使用一些代码编辑器打开 .xcodeproj,您会在那里找到该文件。请注意,我在我的另一台电脑上备份了我的应用程序,所以我在那里找到了那个文件,所以你可能会在某个地方备份你的项目,以便它工作。
【讨论】:
在我的情况下,我将名称 bundler 名称 abc.com.app1 更改为其他名称,这导致 xcode 将以前的 xcode 项目移动到同一文件夹的隐藏文件中,所以我删除了新的 xcode 文件并使用了以前隐藏的旧xcode文件,我的问题就解决了。【参考方案6】:发生这种情况的另一种情况是,如果您出于某种原因在 pod 或编辑器中使用 sudo - 如果文件存在于 yourApp.xcodeprojectroj 目录下但 xcode 抱怨找不到它 - 转到您的项目根目录并做:
sudo chown -R yourusername:staff ./*
【讨论】:
【参考方案7】:我找到了解决这个问题的方法。
错误的原因是 .xcodeproj 文件缺少其包含的 pbxproj 文件,对吗?这通常在您右键单击 .xcodeproj 文件并单击“显示包内容”时出现。但是,在您自己的情况下,由于 git 版本控制的某些错误或其他原因,它已被删除。
由于您无法真正生成 .pbxproj 文件,因此我找到的解决方案是转到我用来创建存储库的原始项目文件夹位置。老实说,你也可以简单地创建一个新项目,只要它具有相同的包标识符等!由于此项目的 xcodeproj 文件将正确包含 .pbxproj 文件,因此将 XCode 环境中的文件替换为您自己的项目文件将允许 .pbxproj 文件根据这些文件进行更新。
因此,在打开这个原始项目文件夹(/new project folder)后,在XCode环境中,我将项目中的所有文件都删除了,并将它们替换为我的项目中无法打开的相应文件xcodeproj 文件。鉴于您刚刚复制了一堆新文件,我不得不在这里和那里修复一些由此产生的错误,涉及构建阶段的东西等等没有排队。但是在修复了一些小错误之后,这个新位置的同一个项目最终能够运行没有问题!
最后,我把这个成功运行的版本的项目,将所有文件,.xcodeproj 文件,项目文件夹,测试文件和所有文件复制到原始存储库位置,事先从存储库中删除文件以避免令人困惑的文件覆盖(如果您想要安全,可以将旧的存储库文件剪切并粘贴到新位置,并且不要想删除它们!)。然后从存储库位置在 XCode 中打开项目,在您的模拟器/设备上构建并运行它,以确保一切都对齐(并修复您可能需要的任何小错误),瞧!您的项目现在可以提交、推送和运行了!
这不是最干净的解决方案,如果各个分支都已损坏,您可能必须在各个分支上执行类似的操作。但是,如果您无法访问 Mac 时间机器,并且其他解决方案不适合您,那么这可能是再次获得可正常工作的 .pbxproj 文件的最直接方法!
哦,我从我的 gitignore 中删除了 .pbxproj。我不确定它是否真的存在于你的 gitignore 中,但我建议你对这个主题进行自己的研究,我自己也不确定!
祝你好运!
【讨论】:
【参考方案8】:使用 xcodegen 库来避免这样的冲突。它有这些特点
✅ 按需生成项目并从 git 中删除您的 .xcodeproj, 这意味着不再有合并冲突! ✅ Xcode 中的组和文件是 始终同步到磁盘上的目录 ✅轻松配置 人类可读且对 git 友好的项目 ✅轻松复制和 无需在 Xcode 中编辑任何内容即可粘贴文件和目录 ✅ 使用构建设置跨多个目标共享构建设置 群组 ✅自动生成不同环境的Scheme 比如测试和生产 ✅ 轻松创建新项目 无需使用 Xcode 即可按需进行复杂设置 ✅ 从任何地方生成,包括在 CI 上 ✅ 分发您的规范 多个文件,便于共享和覆盖 ✅轻松创建 多平台框架 ✅ 无需任何集成 Carthage 框架 工作 ✅ 导出依赖关系图以在 Graphviz 中查看https://github.com/yonaskolb/XcodeGen
【讨论】:
以上是关于项目 ...xcodeproj 无法打开,因为它缺少其 project.pbxproj 文件的主要内容,如果未能解决你的问题,请参考以下文章