【问题标题】:Xcode stuck on IndexingXcode 卡在索引上
【发布时间】:2012-11-29 16:09:19
【问题描述】:

我已经工作了 2 个月的项目无缘无故停止工作,因为 Xcode 卡在“索引”上。我不能再构建项目了。如果我尝试构建,Xcode 会冻结,我必须强制退出。这只发生在这个项目中。

我尝试清理所有派生数据,但没有帮助。

我使用的是 Xcode 4.5.2。

有什么想法吗?

【问题讨论】:

  • 项目是否与某种版本控制相关联?当它与存储库链接时,它往往会定期检查源状态,然后为文件编制索引。如果您的项目很大,这可能会导致它陷入索引。
  • 项目不大。今天我添加了框架 GameKit,但它一整天都运行良好。当我即将完成游戏中心的设置时,问题开始了。我说“索引 | 已处理 4 个文件中的 3 个”。有时“1 个文件中的 0 个”,有时 84 个文件中的 83 个......我想我将不得不创建一个新项目并复制和粘贴几乎所有内容。几个小时……
  • Apple 和它的厉害之处在 xcode 5 上也有同样的问题
  • 我在 Xcode 9.1 上遇到了这个问题。 4年后他们仍然有同样的问题:|
  • Xcode 10 GM 也

标签: xcode indexing freeze


【解决方案1】:
  1. 打开您的项目文件夹。
  2. 找到 ProjectName.xcodeproj 文件。
  3. 右键单击复制并粘贴到安全位置。
  4. 右键单击显示包内容。
  5. 找到 project.xcworkspace 文件并删除该文件。
  6. 重新打开您的项目并清理并重建。

如果您的问题没有解决,请用您的备份文件替换该文件。

【讨论】:

  • 在 xcode 6.2 上的 *.xcodeproj 文件中找不到 project.xcworkspace 文件。 @aleksandar-vacic 的回答对我有用。
  • xcode 似乎仍然停留在“索引 | 等待 xcodebuild”,但是,当我点击播放时,它确实成功构建,所以就是这样。
  • 您能否详细说明此文件的用途/与手头问题的关系?
  • @marlonpya 我猜你正在使用 cocoapods,在这种情况下工作区文件与我正在谈论的文件是分开的。这里我说的是 .project 文件中的文件。希望这会有所帮助,但请务必在更改项目文件或工作区文件的任何内容之前进行备份。
  • 在使用 cocoapods 时遵循相同的说明并打开根文件夹 .xcworkspace 文件
【解决方案2】:

我遇到了类似的问题,Xcode 会花费大量时间进行索引,并且会经常挂起构建项目,此时我不得不强制退出并重新启动 Xcode。这很烦人。

然后我注意到项目中有一条关于不正确地将self 分配为代表的警告。果然,类声明中缺少协议。请注意,在 OP 的示例代码中有类似的分配(尽管无法从示例中判断是否声明了正确的协议):

leaderboardController.leaderboardDelegate == self;

解决该警告后(通过正确声明实现的协议),Xcode 停止了行为不端。另外,我应该注意到,自从实现了协议方法以来,该项目确实执行正确。只是 Xcode 无法确认该协议实际上应该由该类实现。

【讨论】:

    【解决方案3】:
    1. 从 Xcode 中关闭该项目
    2. 打开 Xcode Organizer,找到有问题的项目
    3. 删除管理器中的派生数据文件夹
    4. 关闭/重新打开 Xcode

    在所有 Xcode 行为不端的情况下,首先尝试 Nuking 派生数据

    【讨论】:

    • 请注意,在 Xcode 6.4 中,您应该转到 Window → Projects 而不是 Organizer。
    • 比接受的答案更简单的解决方案,谢谢!
    • 派生数据在我机器上的 ~/Library/Developer/Xcode/DerivedData/ 中。
    • 在较新的 Xcode 版本(例如 13.1)中,菜单项是 ProductShow Build Folder in Finder
    【解决方案4】:

    同时停止运行应用程序。如果您的 xcode 正在运行另一个应用程序,请先停止它,然后您应该继续索引。

    【讨论】:

      【解决方案5】:

      我遇到了这个确切的问题,它是由 20 项数组文字引起的。不得不切换到不同的语法。很傻。

      【讨论】:

      • 对我来说也一样。适用于阵列 4x4。数组 6x6 对 xcode 来说太多了……戏剧
      • @Jehan 你是对的,但是如果你定义了一个数组类型,那么我的问题就解决了。就像例如let propertyType : [[[String : String]]] = [ [ ["propertyKey":"All Types"], ["propertyKey":"House"] ], [["propertyKey":"Apartment & Unit"], ["propertyKey":"Townhouse"] ]....... So on
      • 对我来说也一样。这对于 Apple 和 Xcode 来说绝对是奇怪和真正的失败
      • 如何找出代码中编译器卡住的地方?
      • @TomaszNazarenko - 请参阅下面的答案。您可以让 xcode 警告您有关代码耗时过长的问题。
      【解决方案6】:

      在 Xcode 6.4 中有类似的问题。进度条指示“索引”已“暂停”。尝试删除 project.xcworkspace,然后如上所述删除派生数据。似乎没有帮助。注意到上面的帖子还建议修复警告,并且由于我继承了这个有 180 条警告的庞大项目,我对自己说,“这到底是什么看起来像是修复警告的好日子”。当我修复警告时,半小时后,我注意到“索引”进度条从 10% 增加到大约 20%。一个小时后,到了50%,又一个小时到了80%,又过了半个小时就完成了!结论:在上述建议中添加“吃午饭或午睡”。

      【讨论】:

      • 我认为这是我最后的选择。
      【解决方案7】:

      当使用 Xcode 6 时,它说

      等待制作

      可能是 make 的一个实例已经在运行。终止进程和索引继续进行。很傻,但对我有用。

      【讨论】:

      • 这为我解决了问题。我有一个在后台运行“make start”的 Docker 容器。
      【解决方案8】:

      我在 Xcode 7.0 beta 中遇到了同样的问题。 就我而言,PROJECT 和 TARGETS 的“构建设置”的“配置文件”和“产品包标识符”的值不同。 我为它们设置了相同的值。而且我还对“appName”和“appNameTest”的目标使用了相同的值。 然后关闭项目并重新打开它。 这解决了我的问题。

      【讨论】:

        【解决方案9】:

        我遇到了类似的问题,发现我不小心将一个类定义为自己的子类。我没有收到任何警告或错误,但编译卡住了。

        class mainClass : mainClass
        {
            ...
        }
        

        【讨论】:

        • 事实上,在我的情况下,这是索引卡住的解决方案。很好的答案!
        • 为什么这会(有效地)导致 Xcode 的子进程崩溃,而不会像任何其他代码错误一样产生错误?
        【解决方案10】:

        对我来说,完全关闭 Xcode 然后重新启动项目是可行的。

        这不是原始问题的解决方案,我不相信,但在删除文件和文件夹等之前尝试更简单的事情。感谢 this answer 的想法。

        【讨论】:

          【解决方案11】:

          就我而言,删除派生数据目录没有帮助。显然我有一个文件被另一个进程锁定了,因为在关闭了几个终端窗口和 emacs,并终止了一个 react-native 打包程序进程后,一切都解决了。

          【讨论】:

          • 同样,我之前中断了迦太基重建。显然,并非所有进程都停止运行,因此我认为保留了一些文件在使用中。关闭终端并关闭重新打开 XCode 就可以了。
          【解决方案12】:

          对我来说,原因是我同时在 Primary EditorAssistant Editor 中打开了 same 文件。一旦我关闭了助理编辑器,它就通过了。 (Xcode 版本 7.2.1)

          【讨论】:

            【解决方案13】:

            Command-Option-Shift-K 清理构建文件夹。

            【讨论】:

            • 请检查此URL 它将有助于提高您的内容质量
            【解决方案14】:

            关闭你的 Xcode ,关闭任何打开的 git 客户端(源代码树或终端),最后重新启动你的项目。

            【讨论】:

              【解决方案15】:

              我也遇到了这个问题。我注意到我打开了同一个项目两次。

              所以 QuitXCode > 打开你的项目并确保只打开一个实例 > Clean > CleanBuild Folder in some cases > build.

              它应该可以工作

              【讨论】:

                【解决方案16】:

                按住 alt > 产品 > 清理构建文件夹

                【讨论】:

                  【解决方案17】:

                  最近在 XCode 7.3.1 上遇到了这个问题 - 对我来说,我注意到 CleanMyMac3 的 RAM 使用率达到 100%。在我重新启动机器后,这个问题神奇地自行解决了。然而,平心而论,我已经尝试了接受的答案,所以你需要在重启之前做同样的事情,以防万一:-)

                  【讨论】:

                    【解决方案18】:

                    我通过简单地从我的设备中删除应用程序并重建来解决此问题。

                    【讨论】:

                      【解决方案19】:

                      我在 swift 2.2 中遇到了同样的问题

                      它与泛型函数重载函数有关

                      func warnLog() {
                          print("Warning line: \(#line) file: \(#file) ")
                      }
                      
                      func warnLog<T>(input:T? = nil) -> T? {
                          print("Warning line: \(#line) file: \(#file) ")
                          return input
                      }
                      
                      func warnLog<T>(input:T) -> T {
                          print("Warning line: \(#line) file: \(#file) ")
                          return input
                      }
                      

                      我需要做的就是删除一个未使用的重载

                      func warnLog<T>(input:T? = nil) -> T? {
                          print("Warning line: \(#line) file: \(#file) ")
                          return input
                      }
                      

                      【讨论】:

                        【解决方案20】:

                        对我来说,我犯了一个愚蠢的错误。我这样写一个类:

                        class A: A {
                        .......
                        }
                        

                        导致冻结的类继承自身。 Xcode 没有消息提示。

                        【讨论】:

                        • 这是一个很可能的原因。我的情况就是这样。我很确定我以前也遇到过这种情况。
                        【解决方案21】:

                        这是一个 Xcode 错误(Xcode 8.2.1),我已向 Apple 报告,当您有一个大字典文字或嵌套字典文字时会发生这种情况。您必须将字典分解为更小的部分并使用 append 方法添加它们,直到 Apple 修复该错误。

                        【讨论】:

                        • 2021 年 10 月 Xcode 13.0 仍在发生
                        【解决方案22】:

                        我的情况:不是 project.xcworkspace 文件,也不是 Derived Data 文件夹。

                        我浪费了很多时间。更糟糕的是,没有错误消息。 Xcode 方面没有任何线索。彻底迷路了。

                        最后这个函数(有10多个参数)负责。

                        func animationFrames(level: Float,
                                             image: String,
                                             frame0: String,
                                             frame1: String,
                                             frame2: String,
                                             frame3: String,
                                             frame4: String,
                                             frame5: String,
                                             frame6: String,
                                             frame7: String,
                                             frame8: String,
                                             frame9: String,
                                             frame10: String) {
                        }
                        

                        发疯!事实是令人担忧(因为没有语法错误,或任何类型)

                        【讨论】:

                          【解决方案23】:
                          • 首先,断开网络连接。您的有线网络和无线网络都应该关闭。
                          • 其次,杀死com.apple.dt.SourceKitService 进程。然后 XCode 将重新开始索引而不是卡住。

                          【讨论】:

                          • 在 Xcode 10 中似乎被称为 com.apple.dt.SKAgent
                          【解决方案24】:
                          1. 关闭所有打开的 Xcode
                          2. rm -rf ~/Library/Developer/Xcode/DerivedData
                          3. 右键单击您的 PROJECT_NAME.xc 工作区,选择“显示内容”,然后删除“xcuserdata”文件夹

                          【讨论】:

                            【解决方案25】:

                            这发生在我身上。如果您使用的是 cocoapods,请执行以下操作:

                            1. 删除 project.xcworkspace
                            2. 在终端上使用“pod install”重新安装 pod
                            3. 它将创建一个新的 project.xcworkspace
                            4. 打开新的project.xcworkspace -> Clean -> Build

                            【讨论】:

                            • 谢谢。我在 xcode11.1 中遇到问题,它对我有用
                            • Xcode 11.5 也出现了这个问题,这个问题也解决了。
                            【解决方案26】:

                            对于 XCode 9.3 索引问题 - 卸载 XCode 并从零重新安装。对我有用。

                            【讨论】:

                            • XCode 的大小不是几个 KB。它是几 GB。
                            【解决方案27】:

                            如果您尝试解决索引问题并且您在页面下方这么远,请尝试另一件事!

                            尝试将此标志添加到您的构建设置中。

                            -Xfrontend -warn-long-expression-type-checking=400

                            如果编译器需要很长时间来推导复杂的表达式,则会导致警告。

                            这可能会导致构建错误,在您找到慢速表达式然后删除构建标志后,该错误就会消失。

                            【讨论】:

                            • 这是完美而准确的答案。
                            • 但现在我在构建过程中卡住了
                            【解决方案28】:

                            当我的机器没有交换空间时,这个问题发生在我身上。关闭了几个程序和浏览器选项卡,构建在 30 分钟后突然成功。与我这边的派生数据、锁定文件等无关。

                            【讨论】:

                              【解决方案29】:

                              我在一些使用 Xcode 9.3.1 的项目中遇到过这个问题,在我的情况下,问题是由于某些原因 Xcode 不喜欢的快速代码造成的。这个问题很难解决,因为很难找到导致问题的文件。

                              当我遇到这个问题时,我会从 Xcode 项目中删除一些文件(删除引用)并尝试测试索引是否有效。我这样做的过程

                              1. 删除一些文件
                              2. 关闭 Xcode
                              3. 打开 Xcode
                              4. 如果索引完成尝试重命名某些方法,如果可行,则可能是您删除的文件,它们对 Xcode 有一些奇怪的东西。

                              在我的例子中,我在同一个文件中有一个带有响应式扩展的类定义,由于某种原因 Xcode 不喜欢它,我将响应式扩展移动到另一个文件,现在索引工作正常。

                              【讨论】:

                              • 这是一个非常好的解决方案,因为即使在您尚未编写的代码中,它也可以识别瓶颈。在我的情况下,它是一个未维护的 pod/lib,我花了几天的时间来识别它,因为没有输出警告,即使使用“-Xfrontend -warn-long-expression-type-checking=300”标志也是如此。
                              【解决方案30】:

                              没有什么对我有用,我的项目太大(将目标 cc++swiftjava 文件与 j2obj 合并)。我已经禁用了 Xcode 索引并且几个月没有代码完成工作(这很痛苦)。但最后我找到了解决方法。这个想法是保持 Xcode 对代码进行索引,但使用像 cputhrottle 这样的外部工具来限制其 CPU 使用率。

                              所以首先你需要在终端安装 cputhrottle

                              brew 安装 cputhrottle

                              然后像这样限制Xcode索引过程(20 = 20%)

                              sudo cputhrottle $(pgrep -f com.apple.dt.SKAgent) 20

                              我在此处公开了我的“解决方案”以及模式详细信息:How to prevent Xcode using 100% of CPU when indexing big projects

                              【讨论】:

                              • 这有帮助,尽管 cputhrottle 不再在自制软件中了。您可以改用 cpulimit,但语法略有不同:“sudo cpulimit -l 20 -p $(pgrep -f com.apple.dt.SKAgent)”——虽然我现在可以再次追踪(以前不可能),我更愿意找出索引需要这么长时间并从索引中跳过它,但我不知道它是什么,如何找出,或者如何跳过某些东西(我怀疑一些更大的链接二进制文件甚至提升? ? 我只编译C++,没有使用Swift)..
                              • 好的,我必须重新讨论这个问题。这似乎有帮助,但实际上我后来在使用 cpulimiting skagent 时遇到了一些奇怪的行为。无论如何,这只能解决症状,因此不推荐。
                              • 我还在用这个。另一种选择是完全禁用 Xcode 索引,但这对我来说是最糟糕的。如果我不这样做,Xcode 每次修改文件时都会保持 100% 的索引(基本上是 24 小时/24 小时),当我在编辑器中输入时,它每 2 秒打印 1 个字符,不可用。
                              • 嗯,这是解决问题的有效方法。如果这对你有用,那很好。完成后我遇到了 Xcode 崩溃/swod。然后我尝试了 Kijans 答案中的第 3 步(即不仅删除派生数据,而且从 .xcworkspace 中删除 .xcuserdata),现在一切都很好了。不知道那个..
                              猜你喜欢
                              • 1970-01-01
                              • 2014-08-06
                              • 2013-09-24
                              • 2018-10-05
                              • 2019-06-20
                              • 1970-01-01
                              • 2014-11-06
                              相关资源
                              最近更新 更多