Xcode bloccato sull'indicizzazione


116

Un progetto su cui lavoro da 2 mesi ha smesso di funzionare senza motivo perché Xcode è rimasto bloccato su "Indicizzazione". Non posso più costruire il progetto. Se provo a compilare, Xcode si blocca e devo forzare la chiusura. Questo accade solo con questo progetto.

Ho provato a pulire tutti i dati derivati ​​ma non ho aiutato.

Sto usando Xcode 4.5.2.

Qualche idea?


Il progetto è associato a qualche tipo di controllo della versione? Quando è collegato a un repository, tende a controllare regolarmente lo stato della fonte e successivamente indicizza i file. Se il tuo progetto è grande, potrebbe bloccarsi durante l'indicizzazione.
gibertoni

Il progetto non è così grande. Oggi ho aggiunto il framework GameKit, ma ha funzionato alla grande tutto il giorno. Quando stavo per finire di configurare il Game Center, il problema è iniziato. Dico "Indicizzazione | Elaborati 3 di 4 file". A volte "0 di 1 File", a volte 83 di 84 file ... Immagino che dovrò creare un nuovo progetto e copiare e incollare praticamente tutto.
Ci vorranno

2
Apple e la sua meraviglia hanno lo stesso problema su xcode 5
Roma-MT

2
Sto affrontando questo problema su Xcode 9.1. Dopo 4 anni hanno ancora lo stesso problema: |
Sabri Meviş

3
Anche Xcode 10 GM
QED

Risposte:


163
  1. Apri la cartella del tuo progetto.
  2. Trova il file ProjectName.xcodeproj.
  3. Fare clic con il pulsante destro del mouse su Copia e incolla in un luogo sicuro.
  4. Fare clic con il pulsante destro del mouse su Mostra contenuto pacchetto.
  5. Trova il file project.xcworkspace ed elimina quel file.
  6. Riapri il tuo progetto, pulisci e ricostruisci.

Se il problema persiste, sostituire il file con il file di backup.


1
Impossibile trovare il file project.xcworkspace all'interno del file * .xcodeproj su xcode 6.2. La risposta di @ aleksandar-vacic ha funzionato per me.
Kie

xcode sembra ancora essere bloccato su "indicizzazione | in attesa di xcodebuild", tuttavia, viene compilato con successo quando premo play, quindi è qualcosa.
chiliNUT

3
Potresti approfondire a cosa serve questo file / come è correlato al problema in questione?
de.

@marlonpya Immagino che tu stia lavorando con cocoapods in quel caso il file dell'area di lavoro è separato da quello di cui sto parlando. Qui sto parlando del file all'interno del file .project. Spero che questo aiuti, ma esegui sempre il backup prima di modificare qualsiasi cosa sul file di progetto o sui file dell'area di lavoro.
Pratik Mistry

Durante l'utilizzo di cocoapods segui le stesse istruzioni e apri il file .xcworkspace della cartella principale
Leap Hawk

70
  1. Chiudi quel progetto da Xcode
  2. Apri Xcode Organizer, trova il progetto problematico
  3. Elimina la cartella Dati derivati ​​nell'Organizer
  4. Chiudi / riapri Xcode

Nuking Derived Data è la prima cosa da provare in tutti i casi di comportamento anomalo di Xcode


9
Nota che in Xcode 6.4 dovresti andare su Finestra → Progetti invece che su Organizer.
kennytm

Soluzione molto più semplice rispetto alla risposta accettata, grazie!
Tim

8
I dati derivati ​​si trovano in ~ / Library / Developer / Xcode / DerivedData / sulla mia macchina.
Suragch

23

Ho avuto questo problema esatto, è stato causato da un letterale array di 20 elementi. Ho dovuto passare a una sintassi diversa. Piuttosto stupido.


4
Stessa cosa per me. Funziona per array 4x4. L'array 6x6 era troppo per xcode ... drama
dfens

@Jehan Hai ragione, ma se definisci il tipo di array non ci vorrà tempo, il mio problema è risolto. Come ad esempio let propertyType: [[[String: String]]] = [[["propertyKey": "All Types"], ["propertyKey": "House"]], [["propertyKey": "Apartment & Unit" ], ["propertyKey": "Townhouse"]] ....... Quindi] Se non si definisce il tipo ci vorrà più tempo
Shrikant K

2
Stessa cosa per me. Questo è un fallimento assolutamente bizzarro e reale da parte di Apple e Xcode
wuf810

1
Come fai a scoprire quei punti nel codice in cui il compilatore rimane bloccato?
Tomasz Nazarenko

1
@TomaszNazarenko - Vedi la mia risposta in basso. Puoi ottenere xcode per avvisarti del codice che impiega troppo tempo per essere elaborato.
Greencardigan

18
  1. Chiudi qualsiasi Xcode aperto
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Fai clic con il pulsante destro del mouse su PROJECT_NAME.xcworkspace, scegli "mostra contenuto" ed elimina la cartella "xcuserdata"

9

Ho avuto un problema simile e ho scoperto di aver definito accidentalmente una classe come una propria sottoclasse. Non ho ricevuto alcun avviso o errore per questo, ma la compilazione si è bloccata.

class mainClass : mainClass
{
    ...
}

In effetti, questa è stata la soluzione all'indicizzazione che si è bloccata nel mio caso. Bella risposta!
roma

Perché questo causa (effettivamente) un arresto anomalo di un sottoprocesso di Xcode e non produce un errore come qualsiasi altro bug del codice?
Kirkland,

8

Quando si utilizza Xcode 6 e si dice

Aspettando il make

Potrebbe essere che un'istanza di make sia già in esecuzione. Termina il processo e l'indicizzazione procede. Sciocco, ma ha funzionato per me.


Questo ha risolto il problema per me. Avevo un container Docker in esecuzione con "make start" in background.
Devin Young

7

Un'altra cosa da provare se stai cercando di risolvere i problemi di indicizzazione e sei così in fondo alla pagina!

Prova ad aggiungere questo flag alle impostazioni di build.

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

build impostazioni flag

Provocherà un avviso in cui il compilatore impiega molto tempo per dedurre un'espressione complessa.

avvertimento

Ciò potrebbe causare un errore di compilazione che scomparirà dopo aver trovato le espressioni lente e quindi rimosso il flag di compilazione.


Questa è la risposta perfetta ed esatta.
jaya raj


4

È un bug di Xcode (Xcode 8.2.1) e ho riferito ad Apple che accadrà quando hai un dizionario letterale grande o un letterale dizionario annidato. Devi suddividere il dizionario in parti più piccole e aggiungerle con il metodo di aggiunta fino a quando Apple non risolverà il bug.


4
  • Innanzitutto, disconnettiti dalla rete. Sia la rete cablata che la rete wireless dovrebbero spegnersi.
  • Secondo, uccidi il com.apple.dt.SourceKitServiceprocesso. Quindi XCode inizierà di nuovo a indicizzare invece di bloccarsi.

inserisci qui la descrizione dell'immagine


1
Sembra essere chiamato com.apple.dt.SKAgentin Xcode 10.
lemonmojo

3

Per me la chiusura completa di Xcode e il riavvio del progetto hanno funzionato.

Questa non è la soluzione per la domanda originale, non credo, ma è un'altra cosa semplice da provare prima di eliminare file e cartelle, ecc. Ringraziamo questa risposta per l'idea.


3

Questo è successo a me. Se stai usando cocoapods fai questo:

  1. Elimina project.xcworkspace
  2. Reinstallare i pod utilizzando "installazione pod" sul terminale
  3. Creerà un nuovo project.xcworkspace
  4. Apri il nuovo project.xcworkspace -> Clean -> Build

1
grazie. Sto affrontando un problema in xcode11.1 e per me funziona
Rahul Parikh

1
Ho avuto questo problema con Xcode 11.5, risolto anche da questo.
frankenapps

2

Ho avuto un problema simile in cui Xcode passava molto tempo a indicizzare e spesso si bloccava a costruire il progetto, a quel punto ho dovuto chiudere forzatamente e riavviare Xcode. È stato molto fastidioso.

Poi ho notato un avvertimento nel progetto sull'assegnazione impropria selfcome delegato. Abbastanza sicuro, c'era un protocollo mancante nella dichiarazione della classe. Si noti che c'è un'assegnazione simile nel codice di esempio dell'OP (sebbene sia impossibile dire dall'esempio se il protocollo corretto è dichiarato):

leaderboardController.leaderboardDelegate == self;

Dopo aver risolto l'avviso (dichiarando correttamente il protocollo implementato), Xcode ha smesso di comportarsi male. Inoltre, dovrei notare che il progetto è stato eseguito correttamente poiché sono stati implementati i metodi del protocollo . Era solo che Xcode non poteva confermare che il protocollo dovesse effettivamente essere implementato dalla classe.


2

Niente ha funzionato per me, il mio progetto è troppo grande (la fusione oggettive c, c++, swift, e javafile con j2obj). Ho disabilitato l'indicizzazione di Xcode e ho lavorato senza completamento del codice per mesi (ed è un dolore). Ma finalmente ho trovato una soluzione alternativa. L'idea è di mantenere Xcode indicizzando il codice, ma limitarne l'utilizzo della CPU con uno strumento esterno comecputhrottle .

Quindi prima devi installare cputhrottle nel terminale

brew install cputhrottle

Quindi limita il processo di indicizzazione Xcode in questo modo (20 = 20%)

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

Ho esposto la mia "soluzione" qui con i dettagli della modalità: Come evitare che Xcode utilizzi il 100% della CPU durante l'indicizzazione di grandi progetti


Questo aiuta, sebbene cputhrottle non sia più in homebrew. Puoi invece usare cpulimit, che ha una sintassi leggermente diversa: "sudo cpulimit -l 20 -p $ (pgrep -f com.apple.dt.SKAgent)" - Anche se ora posso rintracciare di nuovo (impossibile prima), Preferirei scoprire cosa ci vuole così tanto tempo per indicizzare e saltare quello dall'indicizzazione, ma non ho idea di cosa sia, come scoprirlo o come saltare qualcosa (sospetto che alcuni binari collegati più grandi o forse addirittura boost? ? Compilo solo C ++, non uso Swift) ..
Eike

Ok, dovrò ribattere su questo. Sembrava aiutare, ma in realtà ho avuto qualche strano comportamento più tardi con skagent cpulimiting. Questo affronta comunque solo il sintomo, quindi non consigliato.
Eike

Lo uso ancora. L'altra scelta è disabilitare totalmente l'indicizzazione Xcode, ma per me è la cosa peggiore. Se non lo faccio Xcode mantiene l'indicizzazione al 100% ogni volta che modifico un file (quindi 24h / 24 in pratica), e quando digito nell'editor stampa 1 carattere ogni 2 secondi, non utilizzabile.
jptsetung

Bene, questo è un metodo efficace se la forza bruta per affrontare il problema. Se per te funziona, va bene. Ho avuto Xcode crash / swod dopo averlo fatto. E poi ho provato il passaggio 3 nella risposta Kijans, (cioè non solo eliminare i dati derivati, ma rimuovere .xcuserdata da .xcworkspace) e ora tutto va di nuovo bene. Non lo sapevo ..
Eike

1

Ha avuto un problema simile in Xcode 6.4. La barra di avanzamento indicava che "Indicizzazione" era "In pausa". Ho provato a eliminare project.xcworkspace, quindi a eliminare i dati derivati ​​come descritto sopra. Non sembra aiutare. Notando che i post sopra suggeriscono anche di correggere gli avvisi, e poiché avevo ereditato questo enorme progetto con 180 avvisi, mi sono detto: "Che diavolo sembra una buona giornata per correggere gli avvisi". Mezz'ora dopo, mentre correggevo gli avvisi, ho notato che la barra di avanzamento "Indicizzazione" era aumentata dal 10% al 20% circa. Un'ora dopo, era al 50%, poi un'altra ora all'80%, poi dopo un'altra mezz'ora è stato fatto! Conclusione: aggiungi "prendi un lungo pranzo o un pisolino" ai suggerimenti di cui sopra.


Penso che questa sia l'ultima risorsa per me.
Rishab

1

Ho riscontrato lo stesso problema con Xcode 7.0 beta. Nel mio caso, i valori per "Provisioning Profile" e "Product bundle identifier" di "Build Settings" differivano tra PROJECT e TARGETS. Ho impostato gli stessi valori per loro. E ho anche usato gli stessi valori per TARGET di "appName" e "appNameTest". Quindi ha chiuso il progetto e lo ha riaperto. Questo ha risolto il mio caso.


1

Nel mio caso, l'eliminazione della directory dei dati derivati ​​non ha aiutato. Apparentemente avevo un file bloccato da un altro processo, perché dopo aver chiuso un paio di finestre di terminale ed emacs e terminato un processo di impacchettamento nativo di reazione, tutto si è risolto.


Lo stesso qui, avevo interrotto una ricostruzione di Cartagine prima. Apparentemente non tutti i processi avevano smesso di funzionare, quindi presumo che alcuni file in uso. La chiusura del terminale e la chiusura-riapertura di XCode hanno funzionato.
CyberDude

1

Per me, ho fatto uno stupido errore. Scrivo una classe come questa:

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

Una classe eredita se stessa che causa il blocco. Nessun suggerimento di messaggio da Xcode.


Questa è una causa molto probabile. Questo è stato nel mio caso. Sono abbastanza sicuro di averlo incontrato anche prima.
Modulo

1

Ho riscontrato questo problema in alcuni progetti con Xcode 9.3.1 e nel mio caso il problema è dovuto a un codice swift che per qualche motivo non piace a Xcode. Questo problema è difficile da risolvere perché è difficile trovare il file che causa il problema.

Quando ho questo problema, rimuovo alcuni file dal progetto Xcode (rimuovendo i riferimenti) e provo a verificare se l'indicizzazione funziona. Il mio processo per farlo

  1. Rimuovi alcuni file
  2. Chiudi Xcode
  3. Apri Xcode
  4. Se l'indicizzazione finisce prova a rinominare qualche metodo se funziona probabilmente i file che hai rimosso hanno qualcosa di strano per Xcode.

Nel mio caso avevo una definizione di classe con un'estensione reattiva nello stesso file e per qualche motivo a Xcode non piace, ho spostato l'estensione reattiva su un altro file e ora l'indicizzazione funziona bene.


Questa è davvero una buona soluzione in quanto consente di identificare il collo di bottiglia anche in un codice che non hai scritto. Nel mio caso si trattava di un pod / lib non mantenuto e ci sono voluti giorni per identificarlo poiché non veniva emesso alcun avviso, anche con i flag "-Xfrontend -warn-long-expression-type-checking = 300".
Cédric

0

Smetti anche di eseguire l'app. se hai un'altra applicazione in esecuzione con il tuo xcode, interrompila prima e dovresti continuare l'indicizzazione.


0

Per me, la causa era ho aperto la stessa lima sia nel editor principale e assistente al montaggio , allo stesso tempo. Una volta chiuso Assistant Editor, è arrivato. (Xcode versione 7.2.1)


0

Chiudi il tuo Xcode, chiudi qualsiasi client git (albero dei sorgenti o terminale) se è aperto e infine riavvia il tuo progetto.


0

Ho affrontato questo di recente su XCode 7.3.1 - per me, ho notato che l'utilizzo della RAM è passato al 100% su CleanMyMac3. Il problema si è magicamente risolto da solo dopo aver riavviato la macchina. In tutta onestà, tuttavia, ero già andato avanti e ho provato la risposta accettata, quindi ti consigliamo di fare lo stesso prima di riavviare per ogni evenienza :-)


0

Ho risolto il problema eliminando semplicemente l'app dal mio dispositivo e ricostruendola.


0

Ho avuto lo stesso problema in swift 2.2

Aveva a che fare con una funzione generica di overload

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
}

tutto quello che dovevo fare è rimuovere uno dei sovraccarichi non utilizzati

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

0

Il mio caso: non era il file project.xcworkspace, non era la cartella Derived Data.

Ho perso un sacco di tempo. Peggio ancora, nessun messaggio di errore. Nessun indizio da parte di Xcode. Assolutamente perso.

Infine questa funzione (con più di 10 parametri) è responsabile.

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

Impazzire! La verità è che è preoccupante (perché non ci sono errori di sintassi o di qualsiasi tipo)


0

Per problemi di indicizzazione XCode 9.3: disinstallare XCode e installarlo di nuovo da zero. Per me va bene.


1
La dimensione di XCode non è di pochi KB. Sono pochi GB.
iphondroid

0

Questo problema si è verificato quando la mia macchina aveva esaurito lo spazio di swap. Chiusi diversi programmi e schede del browser e la build è riuscita improvvisamente dopo 30 minuti di blocco. Niente a che vedere con i dati derivati, i file bloccati, ecc. Dalla mia parte.


0

Ho provato tutte le cose elencate, l'indicizzazione continua a bloccarsi. Questo mi ha aiutato: se la tua indicizzazione è bloccata e uno o più processi rapidi consumano il 99% della tua CPU, elimina semplicemente queste attività rapide, aspetta un po 'e il progresso dovrebbe muoversi. Può ripetersi, fino a raggiungere la fine, nel mio caso ho interrotto il processo 7 volte, ma alla fine l'indicizzazione è stata completata!


0

Ha avuto questo problema su un progetto SwiftUI. Si è scoperto che una delle mie visualizzazioni SwiftUI aveva una variabile dichiarata in modo errato. Avevo:

@EnvironmentObject var roomViewModel

dove avevo bisogno di:

@EnvironmentObject var roomViewModel: RoomViewModel

Nessun errore del compilatore, solo indicizzazione infinita. Dopo aver corretto l'errore, il progetto è stato costruito rapidamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.