Xcode preso na indexação

116

Um projeto em que estou trabalhando há 2 meses parou de funcionar sem motivo porque o Xcode travou em "Indexação". Não consigo mais construir o projeto. Se tento construir, o Xcode congela e tenho que forçar o encerramento. Isso acontece apenas com este projeto.

Tentei limpar todos os dados derivados, mas não ajudou.

Estou usando o Xcode 4.5.2.

Alguma ideia?

tomDev
fonte
O projeto está associado a algum tipo de controle de versão? Quando está vinculado a um repositório, ele tende a manter a verificação regular do status da fonte e, em seguida, indexa os arquivos. Se o seu projeto for grande, isso pode fazer com que ele fique preso na indexação.
gibertoni
O projeto não é tão grande. Hoje adicionei o framework GameKit, mas funcionou muito bem o dia todo. Quando eu estava quase terminando de configurar o Game Center, o problema começou. Eu digo "Indexação | Processados ​​3 de 4 arquivos". Às vezes "0 de 1 arquivo", às vezes 83 de 84 arquivos ... Acho que terei que criar um novo projeto e copiar e colar quase tudo. Será um par de horas ...
tomDev
2
A Apple e sua grandiosidade têm o mesmo problema no xcode 5
Roma-MT
2
Estou enfrentando esse problema no Xcode 9.1. Depois de 4 anos, eles ainda têm o mesmo problema: |
Sabri Meviş
3
Xcode 10 GM também
QED

Respostas:

163
  1. Abra sua pasta de projeto.
  2. Encontre o arquivo ProjectName.xcodeproj.
  3. Clique com o botão direito em Copiar e colar em um local seguro.
  4. Clique com o botão direito em Mostrar conteúdo do pacote.
  5. Encontre o arquivo project.xcworkspace e exclua esse arquivo.
  6. Reabra seu projeto, limpe e reconstrua.

Se o seu problema não for resolvido, substitua o arquivo pelo arquivo de backup.

Pratik Mistry
fonte
1
Não é possível encontrar o arquivo project.xcworkspace dentro do arquivo * .xcodeproj no xcode 6.2. A resposta de @alakandar-vacic funcionou para mim.
Kie
O xcode ainda parece estar travado em "indexing | waiting for xcodebuild", no entanto, ele é compilado com sucesso quando eu clico em play, então é alguma coisa.
chiliNUT
3
Você poderia explicar para que serve esse arquivo / como ele está relacionado ao problema em questão?
de.
@marlonpya Acho que você está trabalhando com cocoapods, nesse caso, o arquivo da área de trabalho é separado do qual estou falando. Aqui estou falando sobre o arquivo dentro do arquivo .project. Espero que isso ajude, mas sempre faça backup antes de alterar qualquer coisa no arquivo do projeto ou arquivos do espaço de trabalho.
Pratik Mistry
Ao usar cocoapods, siga as mesmas instruções e abra a pasta raiz .xcworkspace file
Leap Hawk
70
  1. Feche esse projeto do Xcode
  2. Abra o Xcode Organizer, encontre o projeto problemático
  3. Exclua a pasta de Dados Derivados no Organizer
  4. Fechar / reabrir o Xcode

Nuking Derived Data é a primeira coisa a tentar em todos os casos de comportamento incorreto do Xcode

Aleksandar Vacić
fonte
9
Observe que no Xcode 6.4 você deve ir para Janela → Projetos em vez de Organizador.
kennytm de
Solução muito mais simples do que a resposta aceita, obrigado!
Tim de
8
Os dados derivados estão em ~ / Library / Developer / Xcode / DerivedData / na minha máquina.
Suragch
23

Eu tive esse mesmo problema, foi causado por um literal de matriz de 20 itens. Tive que mudar para uma sintaxe diferente. Muito bobo.

Jehan
fonte
4
O mesmo para mim. Funciona para a matriz 4x4. Array 6x6 era demais para xcode ... drama
dfens
@Jehan Você está certo, mas se você definir o tipo de um array, não levará tempo, então meu problema está resolvido. Como, por exemplo, let propertyType: [[[String: String]]] = [[["propertyKey": "All Types"], ["propertyKey": "House"]], [["propertyKey": "Apartment & Unit" ], ["propertyKey": "Townhouse"]] ....... Então por diante] Se você não definir o tipo, levará mais tempo
Shrikant K
2
O mesmo para mim. Isso é absolutamente bizarro e uma falha real da parte da Apple e do Xcode
wuf810
1
Como você descobre esses lugares no código que o compilador fica preso?
Tomasz Nazarenko
1
@TomaszNazarenko - Veja minha resposta abaixo. Você pode obter o xcode para avisá-lo sobre o código que está demorando muito para funcionar.
greencardigan
18
  1. Feche qualquer Xcode aberto
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Clique com o botão direito no seu PROJECT_NAME.xcworkspace, escolha 'mostrar conteúdo' e exclua a pasta 'xcuserdata'
kjian
fonte
9

Tive um problema semelhante e descobri que acidentalmente defini uma classe como sua própria subclasse. Não recebi nenhum aviso ou erro para isso, mas a compilação travou.

class mainClass : mainClass
{
    ...
}
Philipp Otto
fonte
Na verdade, essa foi a solução para a indexação travar no meu caso. Ótima resposta!
rghome
Por que isso causa (efetivamente) um travamento de um subprocesso do Xcode e não produz um erro como qualquer outro erro de código?
Kirkland de
8

Ao usar o Xcode 6 e ele diz

Esperando fazer

Pode ser que uma instância de make já esteja em execução. Elimine o processo e a indexação continua. Tolo, mas funcionou para mim.

peixe-remo
fonte
Isso consertou para mim. Eu tinha um contêiner do Docker em execução com "make start" em segundo plano.
Devin Young
7

Outra coisa a tentar se você está tentando resolver problemas de indexação e você está tão adiantado na página!

Tente adicionar este sinalizador às suas configurações de construção.

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

sinalizar configurações de construção

Isso causará um aviso quando o compilador levar muito tempo para deduzir uma expressão complexa.

Aviso

Isso pode causar um erro de construção que desaparecerá depois que você encontrar as expressões lentas e remover o sinalizador de construção.

Greencardigan
fonte
Esta é a resposta perfeita e exata.
jaya raj
4

Segure alt> Produto> Limpar pasta de compilação

Rogger2016
fonte
4

É um bug do Xcode (Xcode 8.2.1) e relatei à Apple que isso acontecerá quando você tiver um grande literal de dicionário ou um literal de dicionário aninhado. Você tem que quebrar seu dicionário em partes menores e adicioná-las com o método append até que a Apple conserte o bug.

Saeed Ir
fonte
4
  • Primeiro, desconecte-se da rede. Tanto a rede com fio quanto a rede sem fio devem ser desligadas.
  • Em segundo lugar, elimine o com.apple.dt.SourceKitServiceprocesso. Então o XCode começaria a indexar novamente em vez de travar.

insira a descrição da imagem aqui

ooOlly
fonte
1
Parece ser chamado com.apple.dt.SKAgentno Xcode 10.
lemonmojo
3

Para mim, fechar completamente o Xcode e reiniciar o projeto funcionou.

Esta não é a solução para a pergunta original, não acredito, mas é mais uma coisa simples de tentar antes de excluir arquivos e pastas, etc. Crédito a esta resposta pela ideia.

Suragch
fonte
3

Isso aconteceu comigo. Se você estiver usando cocoapods, faça o seguinte:

  1. Excluir project.xcworkspace
  2. Reinstale pods usando 'pod install' no terminal
  3. Isso criará um novo project.xcworkspace
  4. Abra o novo project.xcworkspace -> Limpar -> Construir
meow2x
fonte
1
obrigado. Estou enfrentando um problema no xcode11.1 e funciona para mim
Rahul Parikh
1
Tive esse problema com o Xcode 11.5, corrigido por isso também.
frankenapps
2

Tive um problema semelhante em que o Xcode gastava muito tempo indexando e frequentemente travava a construção do projeto, ponto em que tive que forçar o encerramento e reiniciar o Xcode. Foi muito chato.

Então, percebi um aviso no projeto sobre a atribuição indevida de selfdelegado. Com certeza, havia um protocolo ausente na declaração da classe. Observe que há uma atribuição semelhante no código de amostra do OP (embora seja impossível dizer a partir da amostra se o protocolo correto foi declarado):

leaderboardController.leaderboardDelegate == self;

Depois de resolver esse aviso (declarando corretamente o protocolo implementado), o Xcode parou de se comportar mal. Além disso, devo observar que o projeto foi executado corretamente desde que os métodos de protocolo foram implementados. Acontece que o Xcode não pôde confirmar se o protocolo deveria de fato ser implementado pela classe.

Peter Gluck
fonte
2

Nada funcionou para mim, meu projeto é muito grande (fusão objetivas c, c++, swift, e javaarquivos com j2obj). Desativei a indexação do Xcode e trabalhei sem completar código por meses (e é uma dor). Mas finalmente encontrei uma solução alternativa. A ideia é manter o Xcode indexando o código, mas limitar o uso da CPU com uma ferramenta externa comocputhrottle .

Então, primeiro você precisa instalar o cputhrottle no terminal

brew instalar cputhrottle

Em seguida, limite o processo de indexação do Xcode assim (20 = 20%)

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

Expus minha "solução" aqui com detalhes de modo: Como evitar que o Xcode use 100% da CPU ao indexar grandes projetos

jptsetung
fonte
Isso ajuda, embora cputhrottle não esteja mais em homebrew. Você pode usar cpulimit em vez disso, que tem uma sintaxe um pouco diferente: "sudo cpulimit -l 20 -p $ (pgrep -f com.apple.dt.SKAgent)" - Embora agora eu possa rastrear novamente (impossível antes), Eu prefiro descobrir o que leva tanto tempo para indexar e pular isso da indexação, mas não tenho ideia do que é, como descobrir ou como pular algo (suspeito de alguns binários vinculados maiores ou talvez até mesmo aumentar? ? Eu só compilo C ++, sem uso de Swift) ..
Eike
Ok, vou ter que remar sobre isso. Pareceu ajudar, mas na verdade eu tive um comportamento estranho depois com cpulimiting skagent. De qualquer forma, isso trata apenas do sintoma, portanto, não é recomendado.
Eike
Eu ainda uso isso. A outra opção é desabilitar totalmente a indexação do Xcode, mas isso é o pior para mim. Se eu não fizer isso, o Xcode continua indexando 100% cada vez que eu modifico um arquivo (então 24h / 24 basicamente), e quando eu digito no editor ele imprime 1 caractere a cada 2 segundos, não utilizável.
jptsetung
Bem, este é um método eficaz de força bruta para resolver o problema. Se isso funcionar para você, isso é bom. Tive travamentos / swods do Xcode depois de fazer isso. E então tentei a etapa 3 na resposta do Kijans (ou seja, não apenas exclua os dados derivados, mas remova .xcuserdata do .xcworkspace) e agora está tudo bem novamente. Não sabia sobre aquele ..
Eike
1

Teve problema semelhante no Xcode 6.4. A barra de progresso indicava que "Indexação" estava "Pausada". Tentei excluir project.xcworkspace e, em seguida, excluir os Dados Derivados conforme descrito acima. Não pareceu ajudar. Observando que os posts acima também sugerem consertar os avisos, e como eu havia herdado esse enorme projeto com 180 avisos, disse a mim mesmo: "Que diabos este parece ser um bom dia para corrigir os avisos". Enquanto corrigia os avisos, meia hora depois, percebi que a barra de progresso "Indexação" havia aumentado de 10% para cerca de 20%. Uma hora depois, estava a 50%, depois outra hora a 80%, e depois de meia hora estava feito! Conclusão: Acrescente "almoçar ou tirar uma soneca" às sugestões acima.

Jerry Krinock
fonte
Acho que este é o último recurso para mim.
Rishab
1

Eu tive o mesmo problema com o Xcode 7.0 beta. No meu caso, os valores para "Provisioning Profile" e "Product bundle identifier" de "Build Settings" diferiram entre PROJECT e TARGETS. Eu defino os mesmos valores para eles. E também usei os mesmos valores para TARGETS de "appName" e "appNameTest". Em seguida, fechou o projeto e o reabriu. Isso resolveu meu caso.

manispin
fonte
1

No meu caso, excluir o diretório de dados derivados não ajudou. Aparentemente, eu tinha um arquivo bloqueado por outro processo, porque depois de fechar algumas janelas de terminal e emacs e encerrar um processo de empacotador reagente nativo, tudo foi resolvido.

Chetstone
fonte
Mesmo aqui, eu havia interrompido uma reconstrução de Cartago antes. Aparentemente, nem todos os processos pararam de funcionar, mantendo alguns arquivos em uso, presumo. Fechar o Terminal e fechar-reabrir o XCode resolveu o problema.
CyberDude
1

Para mim, cometi um erro estúpido. Eu escrevo uma aula como esta:

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

Uma classe herda a si mesma que causa o congelamento. Não há dica de mensagem do Xcode.

Victor Choy
fonte
Esta é uma causa muito provável. Foi isso no meu caso. Tenho certeza de que já encontrei isso antes também.
Formulário de
1

Eu experimentei esse problema em alguns projetos com o Xcode 9.3.1 e no meu caso o problema é devido a algum código rápido que por algum motivo o Xcode não gosta. Esse problema é difícil de resolver porque é difícil descobrir qual arquivo está causando o problema.

Quando tenho esse problema, removo alguns arquivos do projeto Xcode (removendo referências) e tento testar se a indexação funciona. Meu processo para fazer isso

  1. Remova alguns arquivos
  2. Fechar Xcode
  3. Abra o Xcode
  4. Se a indexação terminar tente renomear algum método se funcionar provavelmente os arquivos que você removeu possuem algo estranho para o Xcode.

No meu caso, eu tinha uma definição de classe com uma extensão reativa no mesmo arquivo e por algum motivo o Xcode não gostou, movi a extensão reativa para outro arquivo e agora a indexação funciona bem.

El Belga
fonte
Esta é uma solução realmente boa, pois permite identificar o gargalo, mesmo em um código que você não escreveu. No meu caso, era um pod / lib sem manutenção e levei dias para identificá-lo, já que nenhum aviso foi gerado, mesmo com os sinalizadores "-Xfrontend -warn-long-expression-type-checking = 300".
Cédric
0

Também pare de executar o aplicativo. se você tiver outro aplicativo em execução com seu xcode, interrompa-o primeiro e deverá continuar com a indexação.

NFerocious
fonte
0

Para mim, a causa foi que eu abri o mesmo arquivo no Editor Principal e no Editor Assistente ao mesmo tempo. Assim que fechei o Editor Assistente, ele veio. (Xcode Versão 7.2.1)

estrela
fonte
0

Feche seu Xcode, feche qualquer cliente git (árvore de origem ou terminal) se ele estiver aberto e finalmente reinicie seu projeto.

Mohit Anand
fonte
0

Enfrentei isso recentemente no XCode 7.3.1 - para mim, notei o uso de RAM indo para 100% no CleanMyMac3. O problema se resolveu magicamente depois que reiniciei minha máquina. Com toda a justiça, entretanto, eu já havia tentado a resposta aceita, então você vai querer fazer o mesmo antes de reiniciar, apenas no caso :-)

Angad
fonte
0

Corrigi isso simplesmente excluindo o aplicativo do meu dispositivo e reconstruindo.

robertsan
fonte
0

Eu tive o mesmo problema no Swift 2.2

Tinha a ver com uma função sobrecarregada de função genérica

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
}

tudo que eu precisava fazer é remover uma das sobrecargas não usadas

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

Meu caso: não era o arquivo project.xcworkspace, não era a pasta Derived Data.

Eu perdi muito tempo. Pior, nenhuma mensagem de erro. Nenhuma pista da parte do Xcode. Totalmente perdida.

Finalmente esta função (com mais de 10 parâmetros) é a responsável.

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

Ficar louco! A verdade é que é preocupante (porque não há erro de sintaxe, nem de qualquer tipo)

Markus
fonte
0

Para problema de indexação do XCode 9.3 - Desinstale o XCode e instale novamente do zero. Funciona para mim.

Maximo Lucosi
fonte
1
O tamanho do XCode não é de alguns KBs. São alguns GBs.
iphondroid
0

Esse problema aconteceu comigo quando minha máquina estava sem espaço de troca. Fechou vários programas e guias do navegador e a compilação de repente teve sucesso após 30 minutos de estar travada no lugar. Nada a ver com dados derivados, arquivos bloqueados, etc. do meu lado.

Jacob Torres
fonte
0

Eu tentei todas as coisas listadas, a indexação continua congelando. Isso me ajudou: se sua indexação estiver congelada e você tiver um ou mais processos rápidos consumindo 99% de sua CPU - apenas elimine esta (s) tarefa (s) rápida (s), espere um pouco e o progresso deve avançar. Pode se repetir, até chegar ao fim, no meu caso matei o processo 7 vezes, mas no final a indexação foi concluída!

David Kyslenko
fonte
0

Tive esse problema em um projeto SwiftUI. Descobri que uma das minhas visualizações SwiftUI tinha uma variável declarada incorretamente. Eu tinha:

@EnvironmentObject var roomViewModel

onde eu precisava:

@EnvironmentObject var roomViewModel: RoomViewModel

Não houve erro do compilador, apenas indexação sem fim. Depois de corrigir o erro, o projeto foi construído rapidamente.

Christopher Monsour
fonte