Posso excluir com segurança o conteúdo da pasta de dados derivados do Xcode?

293

Estou com pouco espaço em disco e verifiquei em um utilitário de terceiros que, entre outras coisas, o diretório ~ / Library / Developer / Xcode / DerivedData está ocupando cerca de 22 GB de espaço em disco.

Eu procurei stackoverflow e encontrei este post

Como posso excluir com segurança no meu diretório ~ / Library / Developer / Xcode / DerivedData?

A resposta aceita para esta pergunta sugere que não devo tocar / remover pastas deste diretório. então o que eu fiz foi

  • Encontrei uma pasta de projeto de compilação existente para um aplicativo que eu tenho disponível na Appstore
  • Excluiu a pasta do diretório derivado
  • lançou o XCode 5
  • Abra esse projeto
  • Construção Limpa
  • Testado e compilado em um simulador
  • ReArchived
  • Tudo funcionou. Nada foi quebrado.

A menos que eu tenha perdido alguma coisa nas respostas, quero ter certeza de perguntar a desenvolvedores experientes que se eu excluir todas as pastas do DerivedData, isso não será prejudicial para a construção, teste e compilação desses projetos.

Sam B
fonte
A resposta aceita para a pergunta mencionada é stackoverflow.com/a/7284632/8047, que não diz nada sobre a exclusão do DerivedData ... embora o Archives seja importante para depurar coisas posteriormente, mas esse diretório é diferente.
Dan Rosenstark

Respostas:

372

Sim, você pode excluir todos os arquivos da DerivedDatasubpasta (Not DerivedData Folder)diretamente.

Isso não afetará o trabalho do seu projeto. O conteúdo da DerivedDatapasta é gerado durante o tempo de compilação e você pode excluí-los, se desejar. Não é um problema.

O conteúdo de DerivedDataserá recriado quando você criar seus projetos novamente.

Atualização do Xcode8 +

No Xcode8 que removeu a opção de projeto da guia da janela, você ainda pode usar a primeira maneira:

Xcode -> Preferences -> location -> click on small arrow button as i explain in my first answer.

Atualização do Xcode7.3 Para remover DeriveData de um projeto específico, basta seguir as seguintes etapas:

Vá para Window -> Project:

insira a descrição da imagem aqui

Você pode encontrar a lista de projetos e pode ir para a DerivedDatapasta ou excluir diretamente os projetos individuais do projeto.DerivedData

insira a descrição da imagem aqui


Eu não estou trabalhando no Xcode5, mas na 4.6.3 você pode encontrar a DerivedDatapasta conforme encontrado na imagem abaixo:

insira a descrição da imagem aqui

Depois de clicar em Preferências.

insira a descrição da imagem aqui

Você recebe esta janela

insira a descrição da imagem aqui

Nitin Gohel
fonte
1
Valeu mesmo, cara. O conteúdo dos "Dados Derivados" é basicamente igual aos arquivos em cache e indesejados do Xcode? Então é por isso que está tudo bem excluí-lo para liberar espaço?
Supertecnoboff
1
@gone Do que você está falando? Os arquivos criados precisam ir a algum lugar.
Droppy
2
Bem, com o CMake e outros sistemas make, mesmo com compilações fora da fonte, os arquivos gerados etc. ainda estão dentro do caminho do projeto e serão excluídos se eu excluir a estrutura da pasta ou limpar quando executar uma limpeza. Como estou marcando aproximadamente 100 tarefas por semana, mais ou menos, recebo uma enorme compilação de arquivos que preciso lembrar de excluir manualmente e usando a interface do usuário do XCode, os dados de cada projeto individualmente. Portanto, mantenho meu comentário anterior, embora agora tenha implementado o alias de William no meu .bashrc.
ido
O XCode 8 muda as coisas novamente (sempre foi demais). Agora, precisamos ir manualmente para a pasta em /Users/YourUsername/Library/Developer/Xcode/DerivedDatae excluí-los todos. Como você tinha editado para XCode 7, pensei que você pode querer editar novamente para XCode 8.
sweta.me
1
você pode verificar minha resposta completa. Há várias respostas na mesma antiga ainda trabalhando para ir de preferência e na guia Localização. :)
Nitin Gohel
124

Limpe os dados derivados com frequência suficiente para ter um alias para ele. Pode corrigir problemas de compilação. Eu tenho o seguinte em /Users/Myusername/.bash_profile

alias purgeallbuilds='rm -rf ~/Library/Developer/Xcode/DerivedData/*'

Em seguida, no terminal, digite purgeallbuilds e todas as subpastas de DerivedData serão excluídas.

William Jockusch
fonte
24
Você pode excluir a própria pasta DerivedData. Será apenas recriado.
Nick Lockwood
1
A compilação falha imediatamente no Xcode 8 quando excluí esta pasta. Uma vez adicionado, as coisas funcionaram novamente.
Tim
Esta é uma dica muito útil. Normalmente, encontro falta de espaço a cada semestre e é meio difícil lembrar quais pastas devem ser removidas. O alias é definitivamente conveniente.
Oliver Zhang
35

ATUALIZAÇÃO XCODE 10

Na guia:

  1. Clique no Xcode
  2. Preferências
  3. Locais -> Dados Derivados

Você pode acessar todos os dados derivados e limpar excluindo-os.

Umit Kaya
fonte
A seção Dados Derivados define apenas o caminho dos dados derivados. Não vejo nenhum lugar para vê-los e excluí-los. Por que não fazê-lo apenas via linha de comando?
AlxVallejo
2
@AlxVallejo No final do endereço do caminho, você verá um ícone que o levará para a pasta. Toque nele e exclua a pasta e ela será recriada.
Umit Kaya
34

ATUALIZAÇÃO XCODE 7.2

(Também funciona para 7.1.1)

  1. Clique em Janela , em Projetos e, em seguida, exclua Dados derivados .

Como isso:

insira a descrição da imagem aqui

E exclua-o aqui:

insira a descrição da imagem aqui


Espero que ajude!

Lukesivi
fonte
2
Isso permitirá que você o exclua manualmente, um por um, mas os meios usados ​​em outras postagens são para excluir o conteúdo da pasta DerivedData de uma só vez
XIII
23
 $ du -h -d=1 ~/Library/Developer/Xcode/*

mostra pelo menos duas pastas enormes:

 1.5G   /Users/horace/Library/Developer/Xcode/DerivedData
 9.4G   /Users/horace/Library/Developer/Xcode/iOS DeviceSupport

Sinta-se à vontade para remover itens nas pastas:

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

e alguns em:

 open ~/Library/Developer/Xcode/iOS\ DeviceSupport/
Oh Ho
fonte
2
caramba ... apagar os arquivos de versões anteriores do iOS na pasta suporte a dispositivos liberado 28GB ...
kareem
17

Acabei de criar um repositório do github com um pequeno script, que cria um disco RAM. Se você apontar para a pasta DerivedData /Volumes/ramdisk, após a ejeção do disco, todos os arquivos desaparecerão.

Acelera a compilação, também elimina esse problema

repositório xc-launch

Melhor lançado usando o DTerm

Diego Freniche
fonte
11

XCode 8: Para excluir dados derivados do seu projeto atual:

Clique no menu Produto

Mantenha pressionada a tecla Option

Clique em Limpar pasta de compilação

Steve Yost
fonte
Quando pressiono a tecla de opção, a opção Limpar Compilação fica esmaecida. : /
AlxVallejo
4

ATUALIZAÇÃO XCODE 10

Clique no Xcode na barra de status e selecione Preferences

Na janela PopUp, escolha Locais antes do último segmento

Você pode acessar a pasta Dados Derivados com o pequeno ícone à direita

insira a descrição da imagem aqui

Ali Ihsan URAL
fonte
2

~ / Biblioteca / Desenvolvedor / Xcode / DerivedData

Ansal Antony
fonte
Por padrão, sim; Eu uso ~/tmp/DerivedDatapara que eu possa acessar os arquivos / pacotes criados com mais facilidade.
Droppy
1

sim, seguro para excluir, meu script pesquisa e detecta todas as instâncias encontradas, facilmente modificadas para um diretório local

#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail
IFS=$'\n\t'

for drive in Swap Media OSX_10.11.6/$HOME
do
   pushd /Volumes/${drive}  &> /dev/null
   gfind . -depth -name 'DerivedData'|xargs -I '{}' /bin/rm -fR '{}'
   popd &> /dev/null
done
μολὼν.λαβέ
fonte
0

Eu recebi esse erro porque Int estava int em um arquivo. Tão estúpido.

rajeswari ratala
fonte
-1

Eu diria que é seguro - eu sempre excluo o conteúdo da pasta para muitos tipos de projetos iOS, dessa maneira . E não tive problemas com compilações ou envios para a App Store. O procedimento exclui dados derivados e limpa os ativos em cache de um projeto, para o Xcode 5 e 6.

Às vezes, simplesmente chamar rm -rf no diretório Derived Data deixa um ou mais arquivos restantes, mas meu script faz um loop até que todos os arquivos sejam excluídos.

Sheamus
fonte
Ugh. Erro de digitação. Eu quis dizer 'fornecer'
clearlight
Ah, estou vinculando ao script que forneci em resposta a outra pergunta. Dessa forma, se eu quiser atualizar o script, preciso editar apenas em um local. Você pode seguir o link?
Sheamus
Eu vejo o código agora. Não viu o link antes (se estava lá) obrigado.
Clearlight 08/02
-1

O conteúdo de 'Dados Derivados' é gerado durante o Tempo de Construção. Você pode excluí-lo com segurança. Siga as etapas abaixo para excluir 'Dados derivados':

  1. Selecione Xcode -> Preferências.

Passo 1

  1. Isso abrirá a janela pop-up. Selecione a guia ' Locais '. Na subguia Locais, você pode ver ' Dados derivados ' Clique no ícone de seta ao lado do caminho.

Passo 2

  1. Isso abrirá a pasta que contém 'Dados derivados' Clique com o botão direito do mouse e exclua a pasta.

etapa 3

Jayprakash Dubey
fonte