Desenvolvedores

É seguro apagar DerivedData, simuladores antigos e iOS DeviceSupport do Xcode?

O que cada pasta do Xcode em ~/Library/Developer guarda, quais o Xcode recria, por que os Archives pedem cuidado e os comandos simctl para simuladores.

Leitura de 7 minPela equipe do MoreRoom, Yando Pte. Ltd.Esta página em Markdown

Em resumo

  • A DerivedData pode ser apagada com segurança: o Xcode a recria no próximo build, ao custo de um build mais lento e de uma nova indexação.
  • As pastas iOS DeviceSupport podem ser apagadas com segurança; o Xcode copia os símbolos de novo na próxima vez que você conectar um dispositivo com aquela versão.
  • Não apague os Archives do Xcode às cegas. Eles guardam os arquivos dSYM que o Xcode usa para simbolizar relatórios de falhas dos builds que você publicou.
  • Remova simuladores com xcrun simctl delete unavailable e runtimes com xcrun simctl runtime delete, e não apagando pastas à mão.
  • Cada runtime de simulador costuma ocupar de 7 a 10 GB, então remover as versões do iOS em que você não testa mais costuma ser o maior ganho isolado.

Como limpar o armazenamento do Xcode com segurança

  1. Encerre o Xcode e o Simulator. Encerre o Xcode e o app Simulator para que nenhum build, indexação ou dispositivo iniciado esteja usando as pastas que você vai limpar.
  2. Apague a DerivedData. Abra ~/Library/Developer/Xcode/DerivedData no Finder e mova o conteúdo para o Lixo. O Xcode recria o que precisar no próximo build.
  3. Remova pastas DeviceSupport antigas. Em ~/Library/Developer/Xcode/iOS DeviceSupport, mova para o Lixo as pastas de versões de sistema e dispositivos que você não depura mais.
  4. Apague os simuladores indisponíveis. Execute xcrun simctl delete unavailable no Terminal para remover os dispositivos de simulador cujo runtime não está mais instalado.
  5. Remova os runtimes de simulador que você não usa mais. Execute xcrun simctl runtime list e depois xcrun simctl runtime delete com o identificador de cada runtime em que você não testa mais, ou use Xcode › Settings › Components.
  6. Revise os Archives por último. Abra Window › Organizer › Archives e guarde todo archive de um build que os usuários ainda possam usar. Copie os mais antigos para outro disco antes de apagá-los.

Na maior parte, sim. DerivedData, iOS DeviceSupport, clones de dispositivos de teste, simuladores de pré-visualização e caches do Xcode podem ser apagados com segurança: o Xcode os recria quando precisa deles. Simuladores e runtimes de simulador também podem ser removidos, mas use a ferramenta simctl da Apple em vez do Finder. A única pasta que pede cuidado é Archives, porque ela guarda os símbolos de depuração dos apps que você já publicou.

Juntas, essas pastas chegam facilmente a dezenas de gigabytes num Mac usado para desenvolvimento iOS. Veja o que é cada uma e a forma mais limpa de removê-la.

Onde o Xcode guarda seus dados

Quase tudo fica em ~/Library/Developer, na sua pasta pessoal. A exceção são os runtimes de simulador: são imagens de disco do sistema gerenciadas pelo macOS.

Pasta Caminho Pode apagar? Volta?
DerivedData ~/Library/Developer/Xcode/DerivedData Sim Sim, no próximo build
Archives ~/Library/Developer/Xcode/Archives Revisar antes Não
iOS DeviceSupport ~/Library/Developer/Xcode/iOS DeviceSupport Sim Sim, ao conectar o dispositivo
Dispositivos de simulador ~/Library/Developer/CoreSimulator/Devices Use o simctl Recrie no Xcode
Runtimes de simulador /Library/Developer/CoreSimulator/Volumes Use o simctl Baixe de novo
Clones de dispositivos de teste ~/Library/Developer/XCTestDevices Sim Sim, nos testes em paralelo
Pré-visualizações SwiftUI ~/Library/Developer/Xcode/UserData/Previews Sim Sim, ao rodar as pré-visualizações
Caches do simulador ~/Library/Developer/CoreSimulator/Caches Sim Sim
Caches do Xcode ~/Library/Caches/com.apple.dt.Xcode Sim Sim

A mesma lógica da DeviceSupport vale para as pastas vizinhas watchOS DeviceSupport, tvOS DeviceSupport, visionOS DeviceSupport e macOS DeviceSupport.

Mapa das pastas de armazenamento do Xcode em ~/Library/Developer, com rótulos “Seguro remover” e “Revisar antes”

DerivedData: seguro, o Xcode recria

A DerivedData guarda produtos intermediários de build, o índice do código-fonte, registros de build e caches de módulos, numa subpasta por projeto. Apagá-la nunca toca no seu código. O custo é tempo: o próximo build de cada projeto começa do zero, e o Xcode reindexa tudo antes de o preenchimento de código voltar por completo.

Encerre o Xcode primeiro e depois mova o conteúdo para o Lixo:

open ~/Library/Developer/Xcode/DerivedData

Para limpar um único projeto, apague só a subpasta dele (com o nome do projeto seguido de um sufixo aleatório). O comando Product › Clean Build Folder do Xcode remove os produtos de build, mas normalmente mantém o índice, então libera menos espaço. Você pode conferir ou mudar o local em Xcode › Settings › Locations.

Archives: guarde o que você publicou

Cada .xcarchive é um build assinado criado com Product › Archive e contém os arquivos dSYM do app. O Xcode os usa para acrescentar nomes de símbolos aos relatórios de falhas: sem o dSYM correspondente, uma falha daquele build mostra endereços de memória em vez de nomes de funções. Serviços de relatórios de falhas de terceiros precisam dos mesmos arquivos.

Por isso, revise os archives em vez de esvaziar a pasta. Em Window › Organizer › Archives, apague os builds que nenhum usuário roda mais, como builds antigos de teste interno. Para versões que ainda estão na App Store ou no TestFlight, guarde o archive ou copie os pacotes .xcarchive para um disco externo antes de removê-los do Mac.

iOS DeviceSupport: seguro, copiado de novo quando necessário

Quando você conecta um iPhone, iPad, Apple Watch, Apple TV ou Vision Pro para desenvolvimento, o Xcode copia os símbolos do sistema daquele dispositivo para poder depurar e simbolizar no seu Mac. As versões recentes do Xcode nomeiam cada pasta com o modelo do dispositivo, a versão do sistema e o build, por exemplo iPhone15,5 27.0.1 (24A446), e uma única pasta costuma ter vários gigabytes.

Cada atualização do iOS em cada dispositivo que você depura acrescenta uma nova pasta, e o Xcode não remove as antigas. As pastas de versões de sistema que você não usa mais podem ir para o Lixo com segurança. Se você apagar uma de que ainda precisa, o Xcode a copia de novo na próxima vez que você conectar o dispositivo, o que leva alguns minutos.

Simuladores: dispositivos e runtimes são coisas diferentes

Um runtime de simulador é uma imagem completa do sistema para uma versão, como o iOS 27.1, e costuma ter de 7 a 10 GB. Um dispositivo de simulador é uma configuração pequena com seus próprios dados: apps instalados, fotos e ajustes. Vários dispositivos podem compartilhar um runtime, então apagar um dispositivo libera os dados dele, enquanto apagar um runtime libera a imagem grande.

Diagrama mostrando um runtime de simulador compartilhado por vários dispositivos de simulador e qual comando simctl remove cada um

Remover dispositivos de simulador

Liste os dispositivos e remova os que não funcionam mais com os runtimes instalados:

xcrun simctl list devices
xcrun simctl delete unavailable

O delete unavailable remove os dispositivos que o Xcode atual não aceita mais, normalmente sobras de runtimes antigos. Para remover um dispositivo específico, passe o UDID dele, tirado da lista: xcrun simctl delete <UDID>. Você também pode fazer isso em Window › Devices and Simulators. Evite xcrun simctl delete all, a menos que queira mesmo remover todos os simuladores e seus dados. Apagar um dispositivo é definitivo; você pode criar um novo no Xcode quando quiser.

Remover runtimes de simulador

xcrun simctl runtime list
xcrun simctl runtime delete <identifier>

O runtime list mostra cada imagem instalada com versão, identificador e estado, além do tamanho total. O runtime delete recebe o identificador (o UUID de cada linha), desmonta e remove a imagem. A partir do Xcode 27, o delete também aceita --dry-run para pré-visualizar, --notUsedSinceDays <days>, --unusable e --outdated. Versões mais antigas do Xcode aceitam menos opções, então execute xcrun simctl runtime para ver o que a sua aceita.

No Xcode, você faz o mesmo em Xcode › Settings › Components (chamado Platforms no Xcode 15): selecione um runtime e apague-o. O guia da Apple sobre como baixar e instalar componentes adicionais do Xcode explica como recuperar um runtime, inclusive com xcodebuild -downloadPlatform iOS no Terminal.

Não apague à mão arquivos de runtime em /Library/Developer/CoreSimulator/Volumes ou /System/Library/AssetsV2. As versões recentes do Xcode guardam os runtimes como recursos gerenciados pelo sistema, e remover arquivos diretamente pode deixar um runtime registrado, porém quebrado.

Clones de teste, pré-visualizações e caches do simulador

  • XCTestDevices: clones que o Xcode cria para os testes em paralelo. Podem ir para o Lixo com segurança quando nenhum teste estiver rodando.
  • Pré-visualizações SwiftUI: o Xcode roda as pré-visualizações num conjunto próprio de simuladores. xcrun simctl --set previews delete all os remove; o Xcode os recria na próxima vez que uma pré-visualização rodar.
  • Caches e registros do CoreSimulator: ~/Library/Developer/CoreSimulator/Caches e ~/Library/Logs/CoreSimulator podem ser limpos com segurança com o app Simulator fechado.

Versões antigas do Xcode, toolchains e downloads

Cada cópia do Xcode em /Applications é um app grande, e cópias beta ou antigas mantidas para um projeto legado somam rápido. Antes de apagar uma, verifique qual Xcode as ferramentas de linha de comando usam:

xcode-select -p

Guarde a cópia para a qual esse caminho aponta e qualquer versão de que um job de CI ou um projeto antigo ainda precise. Procure também arquivos .xip em ~/Downloads: depois que o Xcode está instalado, o arquivo compactado não é mais necessário. Toolchains Swift extras baixadas do swift.org ficam em ~/Library/Developer/Toolchains; guarde as que seus projetos usam.

~/Library/Caches/com.apple.dt.Xcode guarda o cache do próprio Xcode e é recriado quando necessário. Se você usa o Xcode há muitos anos, talvez encontre ainda conjuntos de documentação offline que versões bem antigas do Xcode baixaram em ~/Library/Developer/Shared/Documentation/DocSets; as versões atuais não os usam.

Uma ordem sensata

  1. Encerre o Xcode e o Simulator.
  2. Apague a DerivedData, as XCTestDevices e os simuladores de pré-visualização. Isso não tem risco.
  3. Execute xcrun simctl delete unavailable.
  4. Remova as pastas DeviceSupport e os runtimes de simulador de versões de sistema que você não tem mais como alvo.
  5. Revise os Archives e as cópias antigas do Xcode por último, com calma.

Depois, esvazie o Lixo para recuperar o espaço. As pastas são as mesmas no macOS 27 Golden Gate, no 26 Tahoe, no 15 Sequoia e no 14 Sonoma; as opções do simctl disponíveis dependem da sua versão do Xcode.

Como o MoreRoom ajuda

A versão gratuita do MoreRoom varre ~/Library/Developer e reconhece cada uma dessas pastas, com um selo “Seguro remover” ou “Revisar antes” e a indicação de se ela volta. DerivedData, DeviceSupport, clones de teste e caches vão para o Lixo um item de cada vez, com Desfazer. Para dispositivos e runtimes de simulador, o MoreRoom executa os próprios comandos da Apple, xcrun simctl delete e xcrun simctl runtime delete; esses comandos são definitivos e estão sinalizados como tal. Os Archives são marcados para guardar.

O MoreRoom Pro acrescenta o Coletor, para limpar vários itens de uma vez, o modo meta, que escolhe a seleção mais segura para o espaço de que você precisa, e a Hibernação de projetos, para projetos inativos. Transferir archives para um disco externo pelo MoreRoom chega em breve; por enquanto, copie-os você mesmo.

Perguntas frequentes

Apagar a DerivedData vai quebrar meu projeto do Xcode?

Não. A DerivedData só guarda produtos de build, índices e registros gerados pelo Xcode. Seu código-fonte e os ajustes do projeto ficam na pasta do projeto. O próximo build e a próxima indexação demoram mais enquanto o Xcode recria os dados.

É seguro apagar os Archives do Xcode?

Só os de builds que ninguém usa mais. Cada archive contém os arquivos dSYM que transformam os endereços de um relatório de falhas em nomes de funções. Guarde os archives de toda versão que ainda esteja nas mãos dos usuários, ou copie-os antes para outro disco.

Por que a iOS DeviceSupport sempre volta?

O Xcode copia os símbolos de depuração de cada dispositivo que você conecta para desenvolvimento, uma vez por modelo e versão do sistema. Se você apagar a pasta de um dispositivo que ainda usa, o Xcode a copia de novo na próxima vez que você conectá-lo.

Posso simplesmente apagar a pasta CoreSimulator?

É melhor não. Os dispositivos e runtimes de simulador ficam registrados no serviço CoreSimulator, e os runtimes são imagens de disco do sistema montadas. Use xcrun simctl delete e xcrun simctl runtime delete, ou os ajustes do Xcode, para que esse registro continue consistente.

Como recupero um runtime de simulador que apaguei?

Baixe-o de novo em Xcode › Settings › Components ou execute xcodebuild -downloadPlatform iOS no Terminal. Depois, recrie os dispositivos de simulador em Window › Devices and Simulators.

Pastas citadas neste guia