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?


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.


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


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.


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"

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

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.


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.


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


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.


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


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.


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

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.


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


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.


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.


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.


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.


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.


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.


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)


0

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


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ù :-)


0

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


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
}

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)


0

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


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é.


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!


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.