为什么我的project.pbxproj文件更改其格式

时间:2016-05-07 01:15:00

标签: ios xcode xunique

project.pbxproj就像json。但是因为我使用了最新的Xcode(7.3.1),所以它变成了plist。这是project.pbxproj

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>archiveVersion</key>
    <string>1</string>
    <key>classes</key>
    <dict/>
    <key>objectVersion</key>
    <string>46</string>
    <key>objects</key>
    <dict>
        <key>0047E8048E5EE8D208C0B009261D5816</key>
        <dict>
            <key>fileRef</key>
            <string>A1C5C2AA97A78115584DFC22517232F2</string>
            <key>isa</key>
            <string>PBXBuildFile</string>
        </dict>
        <key>008246B8B3F0ED1F2BCDAC8B0BF9CB2F</key>

问题是我无法提交我的项目。我收到此错误:

  

文件&#39; project.pbxproj&#39;被打破。找不到PBXProject名称。

我使用Xunique避免冲突,也许这会有所帮助。请告诉我如何处理这个问题。非常感谢!

2 个答案:

答案 0 :(得分:6)

@Lumialxk

我昨天发生了类似的事情。类似的是,我的project.pbxproj文件是plist格式,不同之处在于我没有得到File 'project.pbxproj' is broken消息。相反,这个问题通过合并冲突浮出水面。冲突在project.pbxproj文件中的位置。有一个冲突,它是文件的全部内容。换句话说,该文件有两个版本。一个在我的新分支上,它是plist格式。还有一个在我们的基础分支上,它采用类似JSON的普通格式。无论哪种方式,它听起来都像你看到的一样。

重要的是要注意两个分支预合并使用Xcode。 Xcode似乎没有plist格式化project.pbxproj文件的问题。

我通过执行git reset --hard HEAD来抛弃我的尝试合并解决了这个问题,这让我回到了一个我有一个plist project.pbxproj文件的分支,我可以构建和运行问题。然后我选择了一个随机构建设置(代码签名),更改了它的值,然后将其更改回来(即我只是&#34;触摸&#34;它强制Xcode修改它)。然后我建立了这个项目。然后在文本编辑器中重新打开project.pbxproj文件。感动&#34;触及&#34;它以正常格式返回的文件,不再是plist格式。

从那里开始一帆风顺。

由于我的同事提出建议&#34;触摸&#34;做法。

我不确定导致这个问题的原因。以下是有关我的设置的一些详细信息:

我正在运行Xcode 7.3(所以我不认为它与7.3.1有任何关系)。我最近从Cocoapods 0.39.0升级到1.0。我认为这是罪魁祸首。我遇到了使用1.0构建一些pod的问题,我通过强制使用0.39.0来解决这个问题:

pod _0.39.0_ install
pod _0.39.0_ update

希望这有帮助!

答案 1 :(得分:2)

更新:还在xUnique README file

中添加了此注释

我是xUnique的作者:)

解决方案非常简单,您无需降级Cocoacpods。只需安装xcproj

brew install xcproj

根本原因:

Convert default ASCII pbxproj file to XML format is done by Cocoapods:

  

每次CocoaPods创建Pods.xcodeproj项目(运行时)   pod更新)或改变你的应用程序xcodeproj项目(在第一个   当你安装pod时,CocoaPods使用了   XML PLIST格式,而Xcode通常生成其xcodeproj文件

     

由于CocoaPods为0.24.0(参见CHANGELOG.md,CocoaPods会自动转换生成的xcodeproj)   如果xcproj在PATH中可用,则将文件转换为ASCII格式。