Xcode bloqué lors de l'indexation

116

Un projet sur lequel je travaille depuis 2 mois a cessé de fonctionner sans raison car Xcode est resté bloqué sur "Indexation". Je ne peux plus construire le projet. Si j'essaie de construire, Xcode se fige et je dois forcer la fermeture. Cela se produit uniquement avec ce projet.

J'ai essayé de nettoyer toutes les données dérivées mais je n'ai pas aidé.

J'utilise Xcode 4.5.2.

Des idées?

tomDev
la source
Le projet est-il associé à une sorte de contrôle de version? Lorsqu'il est lié à un référentiel, il a tendance à vérifier régulièrement l'état de la source et après cela indexe les fichiers. Si votre projet est gros, cela peut le bloquer lors de l'indexation.
gibertoni
Le projet n'est pas si grand. Aujourd'hui, j'ai ajouté le framework GameKit, mais cela fonctionnait très bien toute la journée. Lorsque j'étais sur le point de terminer la configuration du Game Center, le problème a commencé. Je dis "Indexation | Traitement de 3 fichiers sur 4". Parfois "0 sur 1 fichier", parfois 83 sur 84 fichiers ... Je suppose que je vais devoir créer un nouveau projet et copier et coller à peu près tout. Will a couple of hours ...
tomDev
2
Apple et sa génialité ont le même problème sur xcode 5
Roma-MT
2
Je suis confronté à ce problème sur Xcode 9.1. Après 4 ans, ils ont toujours le même problème: |
Sabri Meviş
3
Xcode 10 GM aussi
QED

Réponses:

163
  1. Ouvrez votre dossier de projet.
  2. Recherchez le fichier ProjectName.xcodeproj.
  3. Cliquez avec le bouton droit sur Copier et coller dans un endroit sûr.
  4. Cliquez avec le bouton droit sur Afficher le contenu du package.
  5. Recherchez le fichier project.xcworkspace et supprimez ce fichier.
  6. Rouvrez votre projet et nettoyez et reconstruisez.

Si votre problème n'est pas résolu, remplacez le fichier par votre fichier de sauvegarde.

Pratik Mistry
la source
1
Impossible de trouver le fichier project.xcworkspace dans le fichier * .xcodeproj sur xcode 6.2. La réponse de @ aleksandar-vacic a fonctionné pour moi.
Kie
xcode semble toujours être bloqué sur "l'indexation | en attente de xcodebuild", cependant, il se construit avec succès quand je clique sur play, donc c'est quelque chose.
chiliNUT
3
Pourriez-vous expliquer à quoi sert ce fichier / comment il est lié au problème en question?
de.
@marlonpya Je suppose que vous travaillez avec des cocoapodes, dans ce cas, le fichier d'espace de travail est distinct de celui dont je parle. Ici, je parle du fichier à l'intérieur du fichier .project. J'espère que cela aide, mais faites toujours une sauvegarde avant de modifier quoi que ce soit sur le fichier de projet ou les fichiers de l'espace de travail.
Pratik Mistry
Lorsque vous utilisez des cocoapodes, suivez les mêmes instructions et ouvrez le fichier .xcworkspace du dossier racine
Leap Hawk
70
  1. Fermez ce projet de Xcode
  2. Ouvrez Xcode Organizer, recherchez le projet problématique
  3. Supprimer le dossier des données dérivées dans l'organiseur
  4. Fermer / rouvrir Xcode

Nuking Derived Data est la première chose à essayer dans tous les cas de mauvais comportement de Xcode

Aleksandar Vacić
la source
9
Notez que dans Xcode 6.4, vous devez aller dans Fenêtre → Projets au lieu de l'Organisateur.
kennytm
Solution bien plus simple que la réponse acceptée, merci!
Tim
8
Les données dérivées se trouvent dans ~ / Library / Developer / Xcode / DerivedData / sur ma machine.
Suragch
23

J'ai eu ce problème exact, il a été causé par un littéral de tableau de 20 éléments. J'ai dû passer à une syntaxe différente. Assez idiot.

Jehan
la source
4
Pareil pour moi. Fonctionne pour le tableau 4x4. Array 6x6 était trop pour xcode ... drama
dfens
@Jehan Vous avez raison, mais si vous définissez le type d'un tableau, cela ne prendra pas de temps, mon problème est résolu. Par exemple, let propertyType: [[[String: String]]] = [[["propertyKey": "Tous les types"], ["propertyKey": "House"]], [["propertyKey": "Appartement et unité" ], ["propertyKey": "Townhouse"]] ....... Ainsi de suite] Si vous ne définissez pas le type, cela prendra plus de temps
Shrikant K
2
Pareil pour moi. C'est un échec absolument bizarre et réel de la part d'Apple et de Xcode
wuf810
1
Comment trouvez-vous ces endroits dans le code avec lesquels le compilateur est bloqué?
Tomasz Nazarenko
1
@TomaszNazarenko - Voir ma réponse ci-dessous. Vous pouvez obtenir xcode pour vous avertir du code qui prend trop de temps à travailler.
greencardigan
18
  1. Fermez tout Xcode ouvert
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Cliquez avec le bouton droit sur votre espace de travail PROJECT_NAME.xc, choisissez "afficher le contenu" et supprimez le dossier "xcuserdata"
kjian
la source
9

J'ai eu un problème similaire et j'ai découvert que j'avais accidentellement défini une classe comme sa propre sous-classe. Je n'ai eu aucun avertissement ou erreur pour cela mais la compilation est restée bloquée.

class mainClass : mainClass
{
    ...
}
Philipp Otto
la source
En fait, c'était la solution pour que l'indexation reste bloquée dans mon cas. Très bonne réponse!
rghome
Pourquoi cela provoque-t-il (effectivement) un crash d'un sous-processus de Xcode et ne produit pas une erreur comme tout autre bogue de code?
Kirkland
8

Lors de l'utilisation de Xcode 6 et il dit

En attente de faire

Il se peut qu'une instance de make soit déjà en cours d'exécution. Tuez le processus et l'indexation se poursuit. Idiot, mais a fonctionné pour moi.

aviron
la source
Cela a réglé le problème pour moi. J'avais un conteneur Docker en cours d'exécution avec "make start" en arrière-plan.
Devin Young le
7

Une autre chose à essayer si vous essayez de résoudre les problèmes d'indexation et que vous êtes si loin dans la page!

Essayez d'ajouter cet indicateur à vos paramètres de construction.

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

indicateur des paramètres de construction

Cela provoquera un avertissement lorsque le compilateur prendra beaucoup de temps pour déduire une expression complexe.

avertissement

Cela peut provoquer une erreur de génération qui disparaîtra une fois que vous aurez trouvé les expressions lentes, puis supprimez l'indicateur de génération.

Greencardigan
la source
C'est la réponse parfaite et exacte.
jaya raj le
4

Maintenez alt> Produit> Dossier de construction propre

rogger2016
la source
4

C'est un bogue Xcode (Xcode 8.2.1) et j'ai signalé qu'à Apple, cela se produira lorsque vous avez un grand littéral de dictionnaire ou un littéral de dictionnaire imbriqué. Vous devez diviser votre dictionnaire en parties plus petites et les ajouter avec la méthode d'ajout jusqu'à ce qu'Apple corrige le bogue.

Saeed Ir
la source
4
  • Tout d'abord, déconnectez-vous du réseau. Votre réseau filaire et votre réseau sans fil doivent s'éteindre.
  • Deuxièmement, tuez le com.apple.dt.SourceKitServiceprocessus. Ensuite, XCode recommencerait à indexer au lieu de rester bloqué.

entrez la description de l'image ici

ooOlly
la source
1
Semble être appelé com.apple.dt.SKAgentdans Xcode 10.
lemonmojo
3

Pour moi, fermer complètement Xcode, puis redémarrer le projet a fonctionné.

Ce n'est pas la solution pour la question originale, je ne crois pas, mais c'est une chose plus simple à essayer avant de supprimer des fichiers et des dossiers, etc. Merci à cette réponse pour l'idée.

Suragch
la source
3

Cela m'est arrivé. Si vous utilisez des cocoapodes, procédez comme suit:

  1. Supprimer project.xcworkspace
  2. Réinstaller les pods en utilisant 'pod install' sur le terminal
  3. Cela créera un nouveau projet.
  4. Ouvrez le nouveau project.xcworkspace -> Nettoyer -> Construire
meow2x
la source
1
Merci. Je suis confronté à un problème dans xcode11.1 et cela fonctionne pour moi
Rahul Parikh
1
Avait ce problème avec Xcode 11.5, corrigé par ceci, aussi.
frankenapps
2

J'ai eu un problème similaire où Xcode passait beaucoup de temps à indexer et suspendait fréquemment la construction du projet, auquel cas j'ai dû forcer à quitter et à relancer Xcode. C'était très ennuyeux.

Ensuite, j'ai remarqué un avertissement dans le projet concernant une affectation incorrecte en selftant que délégué. Effectivement, il y avait un protocole manquant dans la déclaration de classe. Notez qu'il existe une affectation similaire dans l'exemple de code de l'OP (bien qu'il soit impossible de dire à partir de l'exemple si le protocole correct est déclaré):

leaderboardController.leaderboardDelegate == self;

Après avoir résolu cet avertissement (en déclarant correctement le protocole implémenté), Xcode a cessé de se comporter mal. Je dois souligner aussi que le projet n'exécuter correctement puisque les méthodes de protocole ont été mises en œuvre. C'était juste que Xcode ne pouvait pas confirmer que le protocole devait en fait être implémenté par la classe.

Peter Gluck
la source
2

Rien n'a fonctionné pour moi, mon projet est trop grand (fusion objectif c, c++, swiftet des javafichiers avec j2obj). J'ai désactivé l'indexation Xcode et travaillé sans fin de code pendant des mois (et c'est pénible). Mais finalement, j'ai trouvé une solution de contournement. L'idée est de continuer à indexer le code par Xcode, mais de limiter son utilisation du processeur avec un outil externe commecputhrottle .

Donc, vous devez d'abord installer cputhrottle dans le terminal

infusion installer cputhrottle

Limitez ensuite le processus d'indexation Xcode comme ceci (20 = 20%)

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

J'ai exposé ma "solution" ici avec les détails du mode: Comment empêcher Xcode d'utiliser 100% du CPU lors de l'indexation de gros projets

jptsetung
la source
Cela aide, bien que cputhrottle ne soit plus dans l'homebrew. Vous pouvez utiliser cpulimit à la place, mais avec une syntaxe légèrement différente: "sudo cpulimit -l 20 -p $ (pgrep -f com.apple.dt.SKAgent)" - Bien que je puisse maintenant tracer à nouveau (impossible auparavant), Je préférerais savoir ce qui prend si longtemps à indexer et ignorer cela de l'indexation, mais je n'ai aucune idée de ce que c'est, comment le savoir ou comment sauter quelque chose (je soupçonne des binaires liés plus gros ou peut-être même un boost? ? Je ne compile que du C ++, pas d'utilisation de Swift) ..
Eike
Ok, je vais devoir ramer là-dessus. Cela a semblé aider, mais en fait, j'ai eu un comportement étrange plus tard avec Skagent cpulimiting. Cela ne traite que le symptôme de toute façon, donc déconseillé.
Eike
J'utilise toujours ça. L'autre choix est de désactiver totalement l'indexation Xcode, mais c'est pire pour moi. Si je ne fais pas cela, Xcode continue d'indexer à 100% chaque fois que je modifie un fichier (donc 24h / 24 essentiellement), et quand je tape dans l'éditeur, il imprime 1 caractère toutes les 2 secondes, non utilisable.
jptsetung
Eh bien, c'est une méthode efficace de force brute pour résoudre le problème. Si cela fonctionne pour vous, c'est bien. J'ai eu des plantages / swod de Xcode après l'avoir fait. Et puis j'ai essayé l'étape 3 dans la réponse de Kijans, (c'est-à-dire non seulement supprimer les données dérivées, mais supprimer .xcuserdata de .xcworkspace) et maintenant tout va bien à nouveau. Je ne savais pas à propos de celui-là ..
Eike
1

Avait un problème similaire dans Xcode 6.4. La barre de progression a indiqué que "Indexation" était "Pausée". J'ai essayé de supprimer project.xcworkspace, puis de supprimer les données dérivées comme décrit ci-dessus. N'a pas semblé aider. Notant que les messages ci-dessus suggèrent également de corriger les avertissements, et comme j'avais hérité de cet énorme projet avec 180 avertissements, je me suis dit: "Qu'est-ce que ça ressemble à une bonne journée pour corriger les avertissements". Alors que je corrigeais les avertissements, une demi-heure plus tard, j'ai remarqué que la barre de progression «Indexation» était passée de 10% à environ 20%. Une heure plus tard, c'était à 50%, puis une autre heure à 80%, puis après encore une demi-heure c'était fait! Conclusion: Ajoutez «prendre un long déjeuner ou une sieste» aux suggestions ci-dessus.

Jerry Krinock
la source
Je pense que c'est le dernier recours pour moi.
Rishab le
1

J'ai rencontré le même problème pour Xcode 7.0 beta. Dans mon cas, les valeurs pour "Provisioning Profile" et "Product bundle identifier" de "Build Settings" différaient entre PROJECT et TARGETS. J'ai défini les mêmes valeurs pour eux. Et j'ai également utilisé les mêmes valeurs pour les TARGETS de "appName" et "appNameTest". Puis fermé le projet et l'a rouvert. Cela a résolu mon cas.

manispin
la source
1

Dans mon cas, la suppression du répertoire de données dérivé n'a pas aidé. Apparemment, j'avais un fichier verrouillé par un autre processus, car après avoir fermé quelques fenêtres de terminal et emacs, et terminé un processus de conditionnement natif de réaction, tout a été résolu.

chetstone
la source
Pareil ici, j'avais interrompu une reconstruction de Carthage plus tôt. Apparemment, tous les processus ne s'étaient pas arrêtés, gardant ainsi certains fichiers en cours d'utilisation, je suppose. La fermeture du terminal et la fermeture-réouverture de XCode ont fait l'affaire.
CyberDude
1

Pour moi, j'ai fait une erreur stupide. J'écris une classe comme celle-ci:

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

Une classe hérite d'elle-même qui provoque le gel. Il n'y a aucun indice de message de Xcode.

Victor Choy
la source
C'est une cause très probable. C'était ça dans mon cas. Je suis presque sûr que j'ai déjà rencontré cela auparavant.
Formulaire du
1

J'ai rencontré ce problème dans certains projets avec Xcode 9.3.1 et dans mon cas, le problème est dû à un code swift que, pour une raison quelconque, Xcode n'aime pas. Ce problème est difficile à résoudre car il est difficile de trouver quel fichier est à l'origine du problème.

Quand j'ai ce problème, je supprime certains fichiers du projet Xcode (suppression des références) et j'essaye de tester si l'indexation fonctionne. Mon processus pour le faire

  1. Supprimer certains fichiers
  2. Fermer Xcode
  3. Ouvrez Xcode
  4. Si l'indexation est terminée, essayez de renommer une méthode si cela fonctionne probablement, les fichiers que vous avez supprimés ont quelque chose d'étrange pour Xcode.

Dans mon cas, j'avais une définition de classe avec une extension réactive dans le même fichier et pour une raison quelconque, Xcode ne l'aime pas, j'ai déplacé l'extension réactive vers un autre fichier et maintenant l'indexation fonctionne bien.

El Belga
la source
C'est une vraie bonne solution car elle permet d'identifier le goulot d'étranglement même dans un code que vous n'avez pas écrit. Dans mon cas, c'était un pod / lib non maintenu et il m'a fallu des jours pour l'identifier car aucun avertissement n'a été émis, même avec les indicateurs "-Xfrontend -warn-long-expression-type-checking = 300".
Cédric
0

Arrêtez également d'exécuter l'application. si vous avez une autre application en cours d'exécution avec votre xcode, arrêtez-la d'abord et vous devriez continuer votre indexation.

NFerocious
la source
0

Pour moi, la cause était que j'avais ouvert le même fichier dans l' éditeur principal et l' éditeur adjoint en même temps. Une fois que j'ai fermé l'Assistant Editor, ça s'est passé. (Xcode version 7.2.1)

wye
la source
0

Fermez votre Xcode, fermez tout client git (arborescence source ou terminal) s'il est ouvert et redémarrez enfin votre projet.

Mohit Anand
la source
0

Face à cela récemment sur XCode 7.3.1 - pour moi, j'ai remarqué que l'utilisation de la RAM passait à 100% sur CleanMyMac3. Le problème s'est résolu par magie après le redémarrage de ma machine. En toute honnêteté cependant, j'étais déjà allé de l'avant et j'ai essayé la réponse acceptée, vous voudrez donc faire de même avant de redémarrer au cas où :-)

Angad
la source
0

J'ai résolu ce problème en supprimant simplement l'application de mon appareil et en la reconstruisant.

Robertsan
la source
0

J'ai eu le même problème dans swift 2.2

Il s'agissait d'une fonction générique surchargée de fonction

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
}

tout ce que j'avais à faire est de supprimer l'une des surcharges non utilisées

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}
Chéyo
la source
0

Mon cas: ce n'était pas le fichier project.xcworkspace, ce n'était pas le dossier Derived Data.

J'ai perdu beaucoup de temps. Pire, pas de message d'erreur. Aucun indice de la part de Xcode. Absolument perdu.

Enfin cette fonction (avec plus de 10 paramètres) est responsable.

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) {
}

Devenir fou! La vérité est que c'est inquiétant (car il n'y a pas d'erreur de syntaxe, ni aucun type)

Markus
la source
0

Pour le problème d'indexation XCode 9.3 - Désinstallez le XCode et installez à nouveau à partir de zéro. Travaille pour moi.

Maximo Lucosi
la source
1
La taille de XCode n'est pas de quelques Ko. C'est quelques Go.
iphondroid
0

Ce problème m'est arrivé lorsque ma machine était à court d'espace de swap. Fermé plusieurs programmes et onglets de navigateur et la construction a soudainement réussi après 30 minutes de blocage. Rien à voir avec les données dérivées, les fichiers verrouillés, etc. de mon côté.

Jacob Torres
la source
0

J'ai essayé toutes les choses énumérées, l'indexation se fige. Cela m'a aidé: si votre indexation est gelée et que vous avez un ou plusieurs processus rapides qui mangent 99% de votre processeur - il suffit de tuer cette ou ces tâches rapides, attendez un peu et la progression devrait avancer. Il peut se répéter, jusqu'à ce qu'il atteigne la fin, dans mon cas, j'ai tué le processus 7 fois, mais à la fin, l'indexation était terminée!

David Kyslenko
la source
0

J'ai eu ce problème sur un projet SwiftUI. Il s'est avéré qu'une de mes vues SwiftUI avait une variable incorrectement déclarée. J'ai eu:

@EnvironmentObject var roomViewModel

là où j'avais besoin:

@EnvironmentObject var roomViewModel: RoomViewModel

Il n'y a pas eu d'erreur de compilation, juste une indexation sans fin. Après avoir corrigé l'erreur, le projet s'est construit rapidement.

Christophe Monsour
la source