Guia de armazenamento para desenvolvedores

O Xcode está ocupando todo o meu espaço

De vinte a sessenta gigabytes num Mac ativo, espalhados por seis pastas, e o Xcode nunca limpa nenhuma delas sozinho. Aqui está cada uma, para que serve, e se você pode apagar.

Teste grátis de 14 dias, sem cartão. Depois US$ 15 uma vez para 3 computadores.

Bytesweep listando por tamanho as pastas DerivedData e de suporte a dispositivos do Xcode

Meça primeiro

Um comando mostra como o total se divide entre as pastas do Xcode, para você saber qual atacar:

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

As seis pastas

DerivedData — em geral a maior · seguro apagar

Intermediários de compilação, índices e caches de módulos, uma pasta por projeto, guardados para sempre inclusive de projetos que você apagou faz tempo.

~/Library/Developer/Xcode/DerivedData

Apagar custa uma compilação lenta e nada mais. É também a solução padrão quando o Xcode se comporta de forma estranha, e por isso todo desenvolvedor iOS sabe esse caminho de cor.

iOS DeviceSupport — grande · seguro apagar

Caches de símbolos copiados de todo dispositivo físico que você já conectou, uma pasta por versão do iOS. Vários gigabytes cada, e vão se acumulando de telefones que você não tem mais.

~/Library/Developer/Xcode/iOS DeviceSupport

O Xcode copia de novo na próxima vez que você conectar um dispositivo com aquela versão do iOS — uma primeira conexão mais lenta e nada mais.

Dispositivos do CoreSimulator — grandes · quase sempre seguros

Cada dispositivo simulado tem o próprio sistema de arquivos, e eles nunca são recuperados. Use o comando do próprio Xcode em vez de apagar pastas, para o banco dele continuar consistente:

xcrun simctl delete unavailable

Para ir além, xcrun simctl delete all remove todos os dispositivos simulados. Os runtimes dos simuladores são gerenciados em Xcode → Ajustes → Componentes.

Archives — pequenos mas insubstituíveis · manter

Toda versão que você já publicou, com os símbolos de depuração dSYM.

~/Library/Developer/Xcode/Archives

Esse é o que você deve deixar em paz. Sem o dSYM de uma versão publicada você não consegue simbolizar os relatórios de falha de quem a usa: os rastreamentos ficam em endereços hexadecimais para sempre. Se precisar mesmo recuperar espaço aqui, mantenha os archives de toda versão que ainda esteja em circulação.

E de novo depois da próxima versão do iOS

O DerivedData volta no dia em que você compila, o DeviceSupport cresce a cada dispositivo conectado: isso é uma tarefa recorrente, não uma solução. O Bytesweep acha as seis pastas numa passada, mantém os Archives marcados para revisão em vez de limpeza, e desfaz qualquer limpeza por sete dias — o que importa no dia em que você limpa o projeto errado.

Cache do Swift Package Manager — seguro apagar

Repositórios de dependências clonados, buscados de novo sob demanda.

~/Library/Caches/org.swift.swiftpm

Runtimes antigos de simuladores e versões antigas do Xcode — com cuidado

Um Xcode.app anterior tem 15 GB sozinho, e os runtimes mais alguns. Guarde a versão de que você ainda precisa para um projeto antigo; apague o resto pelo Finder e depois remova os runtimes associados em Ajustes → Componentes.

Dois hábitos que seguram o crescimento

Apague o DerivedData por projeto, não em bloco

Cada subpasta leva o nome de um projeto. Limpar a pasta inteira força recompilar tudo em que você está trabalhando; limpar as dos projetos que terminaram no ano passado não custa absolutamente nada.

Confira o DeviceSupport depois de cada versão do iOS

Cresce uma pasta por versão do iOS e por dispositivo conectado, então sobe em silêncio o ano todo. Dois minutos a cada setembro evitam que vire 30 GB.

Ache as seis de uma vez

O Bytesweep detecta cada pasta do Xcode pelo nome, mostra o tamanho, e marca os Archives como para revisar em vez de limpar. Tudo o que você limpa vai para um ponto de restauração: desfazer fica a um clique por sete dias.

Relacionado: Docker disk space · a lista completa do Mac

Perguntas

É seguro apagar o DerivedData?

Sim. É tudo derivado do seu código, que é exatamente o que o nome diz. O único custo é que a próxima compilação de cada projeto afetado será completa.

Apagar o DeviceSupport quebra a depuração no meu telefone?

Não. O Xcode copia os símbolos de novo na próxima vez que você conectar um dispositivo com aquela versão do iOS. A primeira conexão depois demora alguns minutos a mais.

Posso apagar os Archives do Xcode?

Pode, mas pense antes. Os Archives guardam os dSYM das versões que você publicou, e sem eles os relatórios de falha dessas versões não podem ser simbolizados. Mantenha tudo que ainda esteja com usuários; apague betas antigas à vontade.

Por que o próprio Xcode.app é tão grande?

Cerca de 15 GB, porque traz as toolchains, os SDKs e os runtimes de simulador de todas as plataformas que a Apple suporta. Dá para remover runtimes não usados em Xcode → Ajustes → Componentes, mas o pacote do aplicativo é o que é.

O Xcode limpa alguma coisa disso automaticamente?

Não. Nenhuma dessas pastas tem limite de tamanho nem validade. É exatamente por isso que esta página existe.