Posso excluir simuladores de dispositivos desnecessários do Xcode?

64

Descobri que o Xcode no meu laptop consome grande parte de seu armazenamento, por isso estou tentando excluir arquivos desnecessários no Xcode.

Existem quatro diretórios abaixo Application/Xcode.app/Contents/Developer/Platforms/. Sinto isso WatchSimulator.platforme AppleTVSimulator.platformnão sou necessário, porque uso o Xcode quase apenas para o desenvolvimento básico do iOS.

Gostaria de saber se posso excluir os diretórios dessas plataformas diretamente?

Diretórios

IzumiSy
fonte
Apenas um FYI ... Você ganhará apenas metade do espaço mostrado, pois eles parecem compactados. Veja a folha Get Info, por exemplo, no meu sistema, para WatchOS.platform, ela mostra 50.579.830 bytes (28,2 MB no disco) para 2.212 itens e AppleTVSimulator.platform mostra 1.865.477.227 bytes (1,1 GB no disco) para 29.705 itens. Portanto, você não ganhará tanto espaço livre quanto os valores mostrados no seu OP.
user3439894
Os arquivos são compactados e o sistema de arquivos HFS + da Apple suporta compactação transparente, mas o Finder e lsno Terminal não possuem um sinalizador para ver que um arquivo está usando o hfsCompression , sem a Folha de informações, onde é possível ver que o valor no disco é dramaticamente diferente do tamanho mostrado em bytes . Existe um utilitário escrito por terceiros, que inclui o código fonte, se alguém quiser compilá-lo, o afsctool . Entre seus recursos, está a obtenção de informações sobre os arquivos compactados HFS + existentes.
usar o seguinte comando
Qual programa está ajudando você a determinar esses arquivos grandes em sua unidade?
Pysis
1
@Pysis Parece o OmniDiskSweeper para mim. Essa ferramenta não foi atualizada para APFS e compactação, embora pareça que eles tenham algumas novas compilações de teste agora.
Zach Lipton
1
@Zach Lipton, se o OP estiver executando o High Sierra e o APFS, os arquivos poderão não ser compactados porque o APFS ainda não suporta compactação. Ou isso mudou na versão 10.13.1?
user3439894

Respostas:

63

Sim, você pode excluir qualquer simulador que não use. Faço isso rotineiramente quando paro de oferecer suporte a versões mais antigas do iOS.

Se você excluí-los e achar que precisa deles em algum momento no futuro, poderá baixá-los novamente no site de desenvolvedor da Apple.

A melhor maneira de excluí-los é no Xcode. Vá para Window -> Devices and Simulators. Isso abrirá uma nova janela com todos os dispositivos que você usa no Xcode.

Na parte superior, toque em Simulatorse você verá uma lista no lado esquerdo.

A partir daí, encontre o simulador que deseja excluir e Cntl- clique (ou clique com o botão direito do mouse) e selecione Delete.

Eu faço isso com cada simulador que é executado em cada versão do iOS que não é mais compatível.

fsb
fonte
7
Eu sei que este post tem alguns anos, mas isso não parece remover o simulador, mas apenas a listagem dele no Xcode. Portanto, se for necessário removê-lo para economizar espaço em disco, esse não é o método correto.
Sean Patterson
34

O Xcode agora compartilha os simuladores com todos os usuários. Portanto, você precisa remover os simuladores da seguinte pasta:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Por exemplo:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes
sudo rm -rf iOS\ 8.4.simruntime/
sudo rm -rf iOS\ 9.3.simruntime/

Felicidades!

Francois Nadeau
fonte
29

Você pode remover facilmente todos os simuladores indisponíveis com este comando no terminal:

xcrun simctl delete unavailable
berílio
fonte
1
Na realidade, isso não faz muito. Se você executar xcrun simctl list, verá que apenas 10% dos dispositivos são considerados "indisponíveis". Os dispositivos também não são os porcos espaciais reais aqui. Os tempos de execução do iOS são. A resposta de François é muito melhor na prática.
joshuakcockrell 13/09
1
@joshuakcockrell Não necessariamente; depois de anos acumulando versões desatualizadas de simuladores, isso liberou uma quantidade ridícula de espaço no meu caso. Então eu acho que sim.
Paul Cantrell
Contei ( wc -l) 148 linhas na lista com 'indisponível' e 128 fora. O comando delete acima me deu 14 GB de volta
Craig
15

Apesar da resposta do @ fsb permitir excluir "instâncias" do simulador, o caminho certo para liberar um espaço massivo usado pelas plataformas antigas do simulador que não são mais necessárias está indo para a seguinte pasta:

~/Library/Developer/Xcode/iOS DeviceSupport

e remova as pastas correspondentes ao simulador / plataformas das quais você não precisa mais.

Além disso, há um artigo muito bom com outras dicas sobre esta e outras:

Ricardo Barroso
fonte
3
parece que /Library/Developer/Xcodefoi removido após a nova atualização do macOS. Não consigo encontrar em lugar nenhum.
Suhaib 01/07/19
1
@ Suhaib, você esqueceu o til inicial " ~ " que inicia o caminho no seu diretório pessoal. O diretório correto é: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso
6

Onde o Xcode armazena simuladores em 2019+ Catalina, Xcode 11.0

Runtimes

$ open /Library/Developer/CoreSimulator/Profiles/Runtimes

Por exemplo: iOS 13.0, watchOS 6.0Estes têm mais espaço, de longe. Cada um pode ter até 5 GB

Aparelhos

$ open ~/Library/Developer/CoreSimulator/Devices

Por exemplo: iPhone Xr, iPhone 11 Pro Max. Estes são tipicamente <15 mb cada.

Explicação

Os simuladores são divididos entre tempos de execução e dispositivos. Se você executar, $ xcrun simctl listpoderá ver uma visão geral, mas se quiser encontrar a localização física desses simuladores, consulte os diretórios que mostrei.

É totalmente seguro excluir tempos de execução que você não suporta. Você pode reinstalá-los posteriormente, se desejar.

joshuakcockrell
fonte
1
Obrigado, isso me ajudou muito!
acido 9/10
5
  • para listar todos os simuladores xcrun simctl list devicesouxcrun simctl list --json

  • excluir dispositivo específico xcrun simctl delete <device udid>

  • remover dispositivos antigos para tempos de execução que não são mais suportados xcrun simctl delete unavailable

Jasmeet Singh
fonte
você pode usar xcrun simctl delete alleu suponho
revau.lt
1

Abra Terminal.app e execute o seguinte:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Agora digite a versão do iOS para a qual você deseja remover os simuladores no comando abaixo, por exemplo, se você deseja remover para o iOS 12.0, execute:

sudo rm -rf iOS\ 12.0.simruntime/

Tejinder
fonte
1

Para excluir simuladores pela versão do iOS:

Se você deseja remover apenas simuladores para uma versão específica e tiver fastlaneinstalado, é possível iniciar um shell ruby ​​interativo e executar os seguintes comandos para remover todos os simuladores do iOS 10:

# launch the interactive ruby shell (irb)
$ irb

# require the device manager capabilities of fastlane core
irb(main):001:0> require 'fastlane_core/device_manager'

# delete all iOS 10 simulators
irb(main):002:0> FastlaneCore::Simulator.delete_all_by_version(os_version: "10.0")
flo_23
fonte