【问题标题】:Why are there recovered references in my xcode project file?为什么我的 xcode 项目文件中有恢复的引用?
【发布时间】:2017-09-13 14:59:52
【问题描述】:

我有一个 react native 应用程序,只是注意到在 Xcode 中的 project.pbxproj 文件中为 Recovered References 添加了几行。

我不记得添加或删除任何引用,恢复的引用显示了我通常使用的库。在不知道这些更改是什么的情况下,我很犹豫要检查 git 的本地更改。我应该放弃这些更改吗?

如果我自己没有添加或删除这些包,有人可以解释为什么会添加这些行吗?这是否意味着某些引用已被删除以便以后恢复?我唯一能想到的是我运行了 react-native 链接,这会做出这些改变吗?

添加了这一行

E3C5B1001F6966D2006296E1 /* Recovered References */,

整个部分都是新的:

E3C5B1001F6966D2006296E1 /* Recovered References */ = {
            isa = PBXGroup;
            children = (
                E602D61E379048BF92DC0C6D /* libRNDeviceInfo.a */,
                DEE39860F1B042208F193884 /* libRNVectorIcons.a */,
                C193FEFE9F3B45388016E921 /* libRNShare.a */,
                58B3A26CAB2543FB941C3D8D /* libRNFIRMessaging.a */,
                0BFBA42D662C492EBC1957A0 /* libreact-native-branch.a */,
                4BC248DD95524DE091A41CEC /* libCodePush.a */,
                6DB0E4FE64B34B68A29B262E /* libRNImagePicker.a */,
                E1502CC537D94CF4A5711814 /* libRNAddCalendarEvent.a */,
                065361D30B3F47D4A5101A1D /* libRNAccountKit.a */,
            );
            name = "Recovered References";
            sourceTree = "<group>";
        };

【问题讨论】:

  • 不要删除 xy.xcodeproj/project.pbxproj 文件中的“887789815624279929B80802 /* Frameworks */”行。否则,Xcode 将为您创建“Recovered References”部分。我试了几次,确定是这个原因。

标签: xcode


【解决方案1】:

来自:Xcode 9 Beta 2 的发行说明:

当一个项目被打开时,Xcode 会检测其中是否有任何构建文件 项目中的目标表示不存在的文件引用 在该项目的组树中。任何此类引用都将添加到 名为“Recovered References”的文件组,如果 必要的。这些引用应在 项目酌情。 (22924751)

【讨论】:

  • 我将如何去做最后一句中写的,即These references should be manually reorganized in the project as appropriate.
  • 有人能解释一下怎么做吗?
  • @MonkeyBonkey 你能告诉我们你是怎么解决这个问题的吗?
  • 您必须仔细检查框架属于哪个目标,从recovered references 组中删除(引用)文件,然后转到相应的目标 BuildPhases > Linked Binaries 并添加框架/通过 + 按钮在此处归档。这对我来说是必要的,因为拖放没有为我设置正确的目标成员资格。它只是丢弃了任何目标成员,我遇到了编译器错误。
  • @jscs The sentence just means "drag them to where they belong",如果我忘记了这些文件以前的位置怎么办?
【解决方案2】:

在我的项目中,我发现项目中添加了一个“Recovered Reference”文件夹。它包含对我最近手动删除的文件的引用,并且它仅存在于项目中(不在磁盘上)。可能是由于在从编译源中删除这些文件之前手动从磁盘中删除这些文件而发生的。即使我后来修复了它,这些文件也卡在那里。

解决方案是删除整个文件夹(右键单击它 -> 删除)

【讨论】:

    【解决方案3】:

    除了 RobertK 提供的内容之外,在我的项目中,我注意到这些 Recovered References 也作为重复项出现在目标的项目 Build Phases 中,似乎位于奇怪的文件中地址。

    className.swift ...in some/odd/nonProject/folder/structure
    

    除了大多数其他文件显示的内容之外,基本上是其他任何内容,例如:

    ...in ProjectName/KnownFolder/ExpectedLocation
    

    我发现我可以安全地删除(使用- 按钮)您在构建阶段...in 奇数位置下找到的任何已恢复参考。从 Project Navigator 中删除 red 恢复的文件引用,然后退出并重新加载您的项目,最后以干净和重建的方式完成。

    我希望我能阐明如何是什么原因创建这些奇怪的文件,但是在一个项目中有多个开发人员的情况下,很难抓住启动事件,以便对其进行追踪。

    【讨论】:

      【解决方案4】:

      正如 gheni4 提到的,Xcode 9 出于某种原因在 Recovered References 下添加了几个 *.a 文件。通过删除文件夹和除 iOS 之外的所有目标(iOS-Test、tvOS、tvOS-Test),它们不再自动创建,我最终可以毫无错误地构建。

      【讨论】:

      • 我试过这个,它真的把事情搞砸了。我删除了我的 iOS 测试目标和 Recovered References 文件夹,现在我的链接因架构 x86_64 的未定义符号而失败:“_OBJC_CLASS_$_Orientation”,引用自:AppDelegate.o 中的 objc-class-ref “_OBJC_CLASS_$_CodePush”,引用自: AppDelegate.o 中的 objc-class-ref ,我不知道如何修复它。
      • 我设法通过从 git 恢复 pbxproj 文件来恢复。 xcode 再次添加了 Recovered References 文件夹,但它似乎并没有真正伤害任何东西。构建工作正常,我会忍受它的丑陋。
      【解决方案5】:

      通过重命名文件、手动删除项目文件中与 Recovered References 退出 Xcode 相关的所有内容并运行 synx(一个有用的 ruby​​ 实用程序)来修复它。当我再次打开它时,我可以构建并且一切都很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-22
        • 1970-01-01
        • 2017-07-28
        相关资源
        最近更新 更多