Xcode卡在索引上


116

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

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

我正在使用Xcode 4.5.2。

有任何想法吗?


项目是否与某种版本控制相关联?当它与存储库链接时,它倾向于保持定期检查源状态,然后对文件进行索引。如果您的项目很大,可能会导致它卡在索引上。
gibertoni 2012年

该项目不是那么大。今天,我添加了GameKit框架,但是它整日运行良好。当我要完成游戏中心的设置时,问题开始了。我说“建立索引|已处理3个文件,共4个文件”。有时“ 1个文件中的0个”,有时84个文件中的83个...我想我将不得不创建一个新项目并复制并粘贴几乎所有内容。请问几个小时...
tomDev 2012年

2
苹果及其出色之
Roma-MT

2
我在Xcode 9.1上遇到了这个问题。4年后,他们仍然有同样的问题:|
SabriMeviş17年

3
Xcode 10 GM也是如此
QED

Answers:


163
  1. 打开您的项目文件夹。
  2. 查找ProjectName.xcodeproj文件。
  3. 右键单击复制并粘贴到安全位置。
  4. 右键单击“显示软件包内容”。
  5. 查找project.xcworkspace文件并删除该文件。
  6. 重新打开您的项目,清理并重建。

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


1
在xcode 6.2上的* .xcodeproj文件内找不到project.xcworkspace文件。@ aleksandar-vacic的答案对我有用。

xcode似乎仍然停留在“索引|等待xcodebuild”上,但是,当我点击播放时,它确实能够成功构建,因此就可以了。
chiliNUT

3
您能否详细说明此文件的用途/与当前问题的关系?

@marlonpya我想您正在使用cocoapods,在这种情况下,工作空间文件与我正在谈论的是分开的。在这里,我说的是.project文件中的文件。希望这会有所帮助,但始终在更改项目文件或工作空间文件上的任何内容之前先进行备份。
Pratik Mistry'3

使用cocoapods时,请遵循相同的说明并打开根文件夹.xcworkspace文件
Leap Hawk,

70
  1. 从Xcode关闭该项目
  2. 打开Xcode Organizer,找到有问题的项目
  3. 删除管理器中的“派生数据”文件夹
  4. 关闭/重新打开Xcode

在所有Xcode行为异常的情况下,首先尝试使用Nuking Derived Data


9
请注意,在Xcode 6.4中,您应该转到Window→Projects,而不是Organizer。
kennytm 2015年

比接受的答案更简单的解决方案,谢谢!
蒂姆(Tim)

8
派生数据位于本机上的〜/ Library / Developer / Xcode / DerivedData /中。
Suragch '16

23

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


4
我也是。适用于阵列4x4。数组6x6对于xcode来说实在太多了……戏剧
dfens,2016年

@Jehan你是对的,但是如果您定义的数组类型不需要花时间,那么我的问题就可以解决。例如,让propertyType:[[[[String:String]]] = [[[“ propertyKey”:“所有类型”],[“ propertyKey”:“房屋”]],[[“ propertyKey”:“公寓和单元” ],[“ propertyKey”:“ Townhouse”]] .......等等]如果您不定义类型,则将花费更多时间
Shrikant K

2
我也是。对于苹果和Xcode来说,这绝对是奇异而真实的失败
wuf810

1
您如何在代码中找出编译器卡住的那些位置?
Tomasz Nazarenko

1
@TomaszNazarenko-请在下面查看我的答案。您可以获得xcode来警告您花费太长时间才能完成的代码。
greencardigan

18
  1. 关闭任何打开的Xcode
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. 右键单击您的PROJECT_NAME.xcworkspace,选择“显示内容”,然后删除“ xcuserdata”文件夹

9

我有一个类似的问题,发现我不小心将一个类定义为其自己的子类。我对此没有任何警告或错误,但编译失败。

class mainClass : mainClass
{
    ...
}

实际上,这就是解决索引卡住的方法。好答案!
rghome 2015年

为什么这会(有效地)导致Xcode子进程崩溃,却不会像其他任何代码错误一样产生错误?
Kirkland

8

当使用Xcode 6并说

等待化妆

可能是make实例已在运行。终止进程并继续编制索引。傻了,但是为我工作。


这为我解决了。我有一个在后台运行“ make start”的Docker容器。
Devin Young

7

如果您尝试解决索引问题,而您又不在页面中,那可以尝试另一件事!

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

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

构建设置标志

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

警告

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


这是完美而准确的答案。
jaya raj


4

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


4
  • 首先,断开网络连接。您的有线网络和无线网络都应关闭。
  • 第二,杀死com.apple.dt.SourceKitService进程。然后XCode将再次开始索引而不是卡住。

在此处输入图片说明


1
好像是叫com.apple.dt.SKAgent在Xcode 10
lemonmojo

3

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

我不相信这不是原始问题的解决方案,但是在删除文件和文件夹等之前尝试这是一件简单的事情。这个想法归功于此答案


3

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

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

1
谢谢。我面临的问题xcode11.1和这对我的工作
拉胡尔·帕里克

1
Xcode 11.5也有此问题,此问题也已解决。
frankenapps

2

我有一个类似的问题,即Xcode将花费大量时间编制索引,并经常挂起构建项目,这时我不得不强制退出并重新启动Xcode。真烦人。

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

leaderboardController.leaderboardDelegate == self;

解决该警告(通过正确声明已实现的协议)后,Xcode停止了行为异常。另外,我要指出,该项目没有正确执行,因为该协议的方法进行实施。只是Xcode无法确认该协议实际上应该由该类实现。


2

没有什么工作对我来说,我的工程量太大(合并目标cc++swift,和java文件与j2obj)。我已经禁用了Xcode索引,并且几个月来都没有代码完成,这很痛苦。但最后我找到了解决方法。这个想法是让Xcode索引代码,但要使用外部工具来限制其CPU使用率cputhrottle

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

酿造安装cputhrottle

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

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

我在这里通过模式详细信息介绍了“解决方案”:在索引大型项目时如何防止Xcode使用100%的CPU


这很有帮助,尽管cputhrottle不再自制。您可以改用cpulimit,但语法略有不同:“ sudo cpulimit -l 20 -p $(pgrep -f com.apple.dt.SKAgent)”-尽管我现在可以再次跟踪(以前不可能),我宁愿找出需要很长时间才能建立索引并从索引中跳过的东西,但是我不知道它是什么,如何找出或如何跳过某些东西(我怀疑是一些更大的链接二进制文件,甚至可能是增强的二进制文件? ?我只编译C ++,不使用Swift)
。– Eike

好吧,我得回头再说。似乎有帮助,但实际上我后来在cpulimiting skagent中出现了一些奇怪的行为。无论如何,这只能解决症状,因此不建议这样做。
Eike

我还是用这个。另一个选择是完全禁用Xcode索引,但这对我来说是最糟糕的。如果我不这样做,则每次修改文件时,Xcode都会将索引保持在100%(基本上是24h / 24),当我在编辑器中键入内容时,它每2秒打印1个字符,这是不可用的。
jptsetung

好吧,这是解决暴力问题的有效方法。如果这对您有效,那很好。完成此操作后,我的Xcode崩溃了。然后我尝试了Kijans答案中的第3步(即,不仅删除派生数据,而且从.xcworkspace中删除.xcuserdata),现在一切都很好了。不知道那个..
Eike

1

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


我认为这是我的最后选择。
Rishab

1

对于Xcode 7.0 beta版,我遇到了相同的问题。就我而言,PROJECT和TARGETS的“ Provisioning Profile”和“ Build Bundle”的“产品包标识符”的值不同。我为它们设置了相同的值。而且我还对“ appName”和“ appNameTest”的TARGETS使用了相同的值。然后关闭该项目并重新打开它。那解决了我的情况。


1

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


同样在这里,我早些时候中断了迦太基的重建工作。显然,并非所有进程都已停止运行,因此我认为某些文件仍在使用中。关闭终端并重新打开XCode达到了目的。
Cyber​​Dude '16

1

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

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

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


这是一个很可能的原因。就我而言就是这样。我很确定我之前也遇到过。
表格

1

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

遇到此问题时,我从Xcode项目中删除了一些文件(删除了引用),并尝试测试索引是否有效。我的流程

  1. 删除一些文件
  2. 关闭Xcode
  3. 开启Xcode
  4. 如果索引编制完成,请尝试重命名某些方法(如果可行),可能是您删除的文件对Xcode来说有些奇怪。

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


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

0

也停止运行应用程序。如果您有另一个应用程序与您的xcode一起运行,请先将其停止,然后继续编制索引。


0

对我而言,原因是我同时在主编辑器助手编辑器中打开了相同的文件。关闭助理编辑器后,它就实现了。(Xcode版本7.2.1)



0

最近在XCode 7.3.1上面临这个问题-对我来说,我注意到CleanMyMac3的RAM使用率达到100%。重新启动计算机后,问题神奇地解决了。公平地说,我已经继续尝试接受的答案,因此,在重新启动之前,您可能要这样做,以防万一:-)


0

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


0

我在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
}

0

我的情况是:这不是project.xcworkspace文件,也不是“派生数据”文件夹。

我浪费了很多时间。更糟糕的是,没有错误消息。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) {
}

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



0

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


0

我已经尝试了所有列出的内容,但索引却一直处于冻结状态。这对我有帮助:如果您的索引被冻结,并且您有一个或多个快速进程吞噬了99%的CPU,只需杀死这个快速任务,稍等片刻,进度就可以移动。它可以重复执行,直到完成为止,以我为例,我杀死了7次该过程,但最后,索引已完成!


0

在SwiftUI项目上遇到了这个问题。原来我的SwiftUI视图之一有一个错误声明的变量。我有:

@EnvironmentObject var roomViewModel

我需要的地方:

@EnvironmentObject var roomViewModel: RoomViewModel

没有编译器错误,只是无休止的索引编制。解决错误后,该项目迅速建立。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.