Logo do PruneoPruneo

Como apagar o DerivedData e os caches do Xcode sem quebrar nada

Resposta curta

Você pode apagar ~/Library/Developer/Xcode/DerivedData quando quiser: o Xcode recria a pasta no próximo build, então você só perde tempo de compilação. Simuladores e runtimes antigos saem melhor com xcrun simctl ou pelos ajustes do Xcode. Cuidado com Archives, porque eles guardam os arquivos dSYM de que você precisa para ler relatórios de falhas.

Se você cria apps para iOS ou macOS, o Xcode vai enchendo o seu disco aos poucos com dados de build, dispositivos de simulador, runtimes de simulador e símbolos de dispositivos. Quase tudo é cache que o Xcode consegue recriar. Uma parte, não. Este guia mostra cada pasta, como medir, como limpar e o que você perde.

O que ocupa espaço no Xcode

Estes são os principais lugares onde o Xcode grava, todos dentro da sua pasta de usuário:

Pasta ou item O que é É recriado automaticamente?
~/Library/Developer/Xcode/DerivedData Produtos de build, arquivos intermediários, índices e logs de cada projeto Sim, no próximo build
~/Library/Developer/Xcode/Archives Os archives de Product > Archive, com os seus arquivos dSYM Não
~/Library/Developer/Xcode/iOS DeviceSupport Símbolos de depuração copiados dos dispositivos que você conectou Sim, quando você conecta o dispositivo de novo
~/Library/Developer/CoreSimulator/Devices Cada dispositivo de simulador, com os apps e dados instalados Não, o dispositivo e os dados dele se perdem
Runtimes de simulador O sistema iOS, watchOS, tvOS ou visionOS que cada simulador roda Dá para baixar de novo
~/Library/Developer/CoreSimulator/Caches Caches que o simulador cria Sim, o simulador cria de novo

A ideia central: apague à vontade o que é recriado e pense antes de apagar o que não é.

Passo 1: meça antes de apagar

Sempre olhe primeiro. Este comando só lê, não muda nada:

du -sh ~/Library/Developer/Xcode/DerivedData \
       ~/Library/Developer/Xcode/Archives \
       ~/Library/Developer/Xcode/"iOS DeviceSupport" \
       ~/Library/Developer/CoreSimulator/Devices \
       ~/Library/Developer/CoreSimulator/Caches 2>/dev/null

Para ver quais projetos ocupam mais espaço dentro do DerivedData:

du -sh ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null | sort -h

O nome de cada pasta começa com o nome do projeto, seguido de um sufixo aleatório. Se você vê projetos que apagou meses atrás, essas pastas são pura sobra.

Passo 2: apague o DerivedData

O DerivedData é a pasta mais segura de limpar. Ela só contém dados que o Xcode gera a partir do seu projeto: arquivos compilados, o índice de código usado pelo autocompletar e pela busca, e os logs de build.

Primeiro a opção de menor risco: Clean Build Folder

Dentro do Xcode, abra o projeto e escolha Product > Clean Build Folder (Shift + Command + K). Isso remove só os produtos de build do projeto aberto. É um bom primeiro passo quando um build se comporta de um jeito estranho.

Apague a pasta inteira

Se você quer o espaço de volta para todos os projetos:

rm -rf ~/Library/Developer/Xcode/DerivedData/*

Para apagar só um projeto, remova a pasta dele, por exemplo rm -rf ~/Library/Developer/Xcode/DerivedData/MyApp-abc123. As dependências do Swift Package Manager que o Xcode resolveu também ficam dentro do DerivedData, então o próximo build pode baixá-las de novo.

Passo 3: cuidado com os Archives (arquivos dSYM)

Toda vez que você usa Product > Archive, o Xcode guarda um pacote em ~/Library/Developer/Xcode/Archives. A Apple descreve um archive como um build do seu app que inclui as informações de depuração (Distributing your app). Essas informações de depuração são o arquivo dSYM.

A Apple é clara: você deve guardar o archive do Xcode de cada build que distribui, ou pode não conseguir diagnosticar relatórios de falhas (Building your app to include debugging information).

Então a regra segura é:

  1. Abra Window > Organizer > Archives no Xcode.
  2. Guarde os archives de toda versão que os usuários ainda usam.
  3. Apague só archives de builds de teste ou de versões que ninguém usa mais. Você pode clicar com o botão direito em um archive e escolher Delete, ou mostrá-lo no Finder antes.

Passo 4: limpe os simuladores

Os simuladores ocupam espaço de duas formas: dispositivos (o iPhone 16 que você criou, com seus apps e dados) e runtimes (o sistema iOS que esses dispositivos rodam).

Liste o que você tem

xcrun simctl list devices
xcrun simctl list runtimes

simctl list só lê. Os dispositivos marcados como indisponíveis (unavailable) pertencem a runtimes que não estão mais instalados ou não têm mais suporte.

Apague os dispositivos indisponíveis

Segundo a ajuda embutida (xcrun simctl help delete), unavailable apaga os dispositivos que o SDK atual do Xcode não suporta.

xcrun simctl delete unavailable

Evite xcrun simctl delete all, a menos que você queira mesmo remover todos os dispositivos de simulador, inclusive os que você usa todo dia.

Remova os runtimes de simulador que você não usa mais

Os runtimes costumam ser o item maior. A Apple recomenda gerenciá-los em Xcode > Settings > Components: o Xcode mostra cada componente instalado com o espaço que você pode recuperar, e você o remove com o botão de informações e Delete (Downloading and installing additional Xcode components).

No terminal, xcrun simctl runtime faz o mesmo. Use --dry-run primeiro para ver o que sairia:

xcrun simctl runtime list
xcrun simctl runtime delete --notUsedSinceDays 90 --dry-run

Se a lista parecer certa, rode o mesmo comando sem --dry-run. Um runtime apagado pode ser baixado de novo em Settings > Components quando você precisar, mas isso leva tempo e banda.

Passo 5: iOS DeviceSupport e caches do CoreSimulator

Quando você conecta um iPhone ou iPad para depurar, o Xcode copia os símbolos de depuração daquela versão do iOS para ~/Library/Developer/Xcode/iOS DeviceSupport. Cada versão nova do iOS adiciona uma pasta nova, e as antigas nunca são removidas por você. Dá para vê-las por versão:

du -sh ~/Library/Developer/Xcode/"iOS DeviceSupport"/* 2>/dev/null
rm -rf ~/Library/Developer/Xcode/"iOS DeviceSupport"/"<old-version-folder>"

A pasta ~/Library/Developer/CoreSimulator/Caches guarda caches que o simulador gera. Feche o Xcode e o app Simulator antes de apagar o conteúdo dela; a próxima abertura do simulador vai ser mais lenta enquanto ele recria esses caches.

O que é recriado e o que não é

Se você for lembrar de uma coisa só: DerivedData é cache, Archives são registro.

Problemas comuns depois de limpar

Mantenha tudo sob controle

Rode o comando du -sh do Passo 1 uma vez por mês. Apague o DerivedData quando ele crescer, limpe os simuladores indisponíveis depois de cada atualização do Xcode e revise os Archives depois de cada lançamento. Se você também trabalha com containers ou JavaScript, leia como liberar espaço em disco com docker prune e como limpar node_modules e os caches do npm, pnpm e yarn. Para uma volta completa pelo seu disco, comece por como liberar espaço no Mac, ou baixe o Pruneo de graça.

Perguntas frequentes

É seguro apagar a pasta DerivedData?

Sim. O DerivedData guarda produtos de build, índices e logs que o Xcode cria de novo no próximo build. Feche o Xcode antes e conte com um primeiro build e uma indexação mais demorados.

Apagar o DerivedData apaga o meu código?

Não. O seu código-fonte, os arquivos do projeto e o histórico do Git ficam na pasta do projeto, não no DerivedData. Só os dados de build gerados são removidos.

Posso apagar os Archives do Xcode?

Só os archives de builds que você não dá mais suporte. A Apple diz que você deve guardar o archive de cada build que distribui, porque ele contém os arquivos dSYM usados para simbolizar relatórios de falhas.

O que faz o xcrun simctl delete unavailable?

Ele apaga os dispositivos de simulador que o SDK atual do Xcode não suporta, por exemplo dispositivos ligados a um runtime que você não tem mais instalado.

Experimente com o Pruneo

Grátis para macOS 14 ou posterior. Tudo o que ele limpa pode ser recuperado na quarentena.

Pruneo é para Mac

Envie o link para você e baixe no seu Mac. É grátis e sem conta.

Enviar por e-mail
Baixar mesmo assim