Posso eliminare i simulatori di dispositivo non necessari di Xcode?


64

Ho scoperto che Xcode sul mio laptop consuma gran parte della sua memoria, quindi sto cercando di eliminare i file non necessari in Xcode.

Ci sono quattro directory sotto Application/Xcode.app/Contents/Developer/Platforms/. Lo sento WatchSimulator.platforme AppleTVSimulator.platformnon sono necessario, perché uso Xcode quasi solo per lo sviluppo iOS di base.

Vorrei sapere se posso eliminare direttamente quelle directory delle piattaforme?

Elenchi


Solo un FYI ... Guadagnerai solo circa la metà dello spazio mostrato, in quanto sembrano compressi. Guarda la scheda Ottieni informazioni, ad esempio sul mio sistema per WatchOS.platform mostra 50.579.830 byte (28,2 MB su disco) per 2.212 elementi e AppleTVSimulator.platform mostra 1.865.477.227 byte (1,1 GB su disco) per 29.705 articoli. Quindi non guadagnerai tanto spazio libero quanto i valori mostrati nel tuo OP.
user3439894,

I file sono compressi e il file system HFS + di Apple supporta la compressione trasparente ma nel Finder e lsnel Terminale manca un flag per vedere che un file sta usando hfsCompression , senza il foglio informativo di Get dove puoi vedere che il valore su disco è drammaticamente diverso dalla dimensione mostrata in byte . C'è un'utilità scritta da una terza parte, che include il codice sorgente se si vuole compilarlo da soli, afsctool . Tra le sue capacità c'è quella di ottenere informazioni sui file compressi HFS + esistenti.
user3439894,

Quale programma ti aiuta a determinare questi file di grandi dimensioni sul tuo disco?
Pysis,

1
@Pysis Mi sembra OmniDiskSweeper . Questo strumento non è stato aggiornato per APFS e la compressione, anche se sembra che ora abbiano alcuni nuovi build di test.
Zach Lipton,

1
@Zach Lipton, Se l'OP esegue High Sierra e APFS, i file potrebbero non essere compressi perché APFS non supporta ancora la compressione. O è cambiato questo in 10.13.1?
user3439894,

Risposte:


63

Sì, puoi eliminare qualsiasi simulatore che non usi. Lo faccio regolarmente quando smetto di supportare versioni precedenti di iOS.

Se li elimini e scopri di averne bisogno in futuro, puoi scaricarli nuovamente dal sito degli sviluppatori di Apple.

Il modo migliore per eliminarli è in Xcode. Vai a Window -> Devices and Simulators. Questo aprirà una nuova finestra con tutti i dispositivi che usi in Xcode.

In alto, tocca Simulatorse vedrai un elenco sul lato sinistro.

Da lì, trova il simulatore che desideri eliminare e Cntlfai clic (o fai clic con il pulsante destro del mouse) e seleziona Delete.

Lo faccio con ogni simulatore che gira in ogni versione di iOS che non supporta più.


8
So che questo post ha un paio d'anni, ma questo non sembra rimuovere il simulatore, ma piuttosto solo elencarlo in Xcode. Quindi, se è necessario rimuoverlo per risparmiare spazio su disco, questo non è il metodo corretto.
Sean Patterson,

34

Xcode ora condivide i simulatori con tutti gli utenti. Quindi, è necessario rimuovere i simulatori dalla seguente cartella:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Per esempio:

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

Saluti!


29

Puoi rimuovere facilmente tutti i simulatori non disponibili con questo comando nel terminale:

xcrun simctl delete unavailable

1
In realtà, questo non fa molto. Se corri xcrun simctl listvedrai che solo il 10% circa dei dispositivi è considerato "non disponibile". Anche i dispositivi non sono i maiali dello spazio reale qui. I runtime di iOS sono. @La risposta di Francois è molto meglio in pratica.
joshuakcockrell,

1
@joshuakcockrell Non necessariamente; dopo anni di accumulazione di versioni obsolete del simulatore, questo ha liberato una quantità ridicola di spazio nel mio caso. Quindi immagino ymmv.
Paul Cantrell,

Ho contato ( wc -l) 148 righe nell'elenco con "non disponibile" e 128 fuori. Il comando di cancellazione sopra mi ha restituito 14 GB
Craig

15

Nonostante la risposta di @ fsb consenta di eliminare le "istanze" del simulatore, il modo giusto per liberare uno spazio enorme utilizzato dalle vecchie piattaforme di simulatore non più necessarie sta andando nella seguente cartella:

~/Library/Developer/Xcode/iOS DeviceSupport

e rimuovi le cartelle corrispondenti al simulatore / piattaforme che non ti servono più.

Inoltre, c'è un ottimo articolo con altri questo e altri suggerimenti:


3
sembra che /Library/Developer/Xcodesia stato rimosso dopo il nuovo aggiornamento di macOS. Non riesco a trovarlo da nessuna parte.
Suhaib,

1
@Suhaib hai dimenticato la tilde iniziale " ~ " che fa iniziare il percorso nella tua home directory. La directory giusta è: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso,

7

Dove Xcode memorizza i simulatori in Catalina 2019+, Xcode 11.0

Tempi di esecuzione

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

Ad esempio: iOS 13.0, watchOS 6.0Queste prendono la maggior parte dello spazio, di gran lunga. Ognuno può contenere fino a ~ 5 GB

dispositivi

$ open ~/Library/Developer/CoreSimulator/Devices

Ad esempio: iPhone Xr, iPhone 11 Pro Max. Di solito sono <15 mb ciascuno.

Spiegazione

I simulatori sono suddivisi tra runtime e dispositivi. Se corri $ xcrun simctl listpuoi vedere una panoramica, ma se vuoi trovare la posizione fisica di questi simulatori, guarda in queste directory che ho mostrato.

È assolutamente sicuro eliminare i runtime che non supportate. Puoi reinstallarli in seguito, se lo desideri.


1
Grazie, questo mi ha aiutato molto!
acido

5
  • per elencare tutti i simulatori xcrun simctl list devicesoxcrun simctl list --json

  • per eliminare un dispositivo specifico xcrun simctl delete <device udid>

  • per rimuovere i vecchi dispositivi per i runtime che non sono più supportati xcrun simctl delete unavailable


Puoi usare xcrun simctl delete all suppongo
revau.lt

1

Apri Terminal.app ed esegui quanto segue:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Ora digita la versione iOS per cui desideri rimuovere i simulatori nel comando seguente, ad esempio, se desideri rimuovere per iOS 12.0, esegui:

sudo rm -rf iOS\ 12.0.simruntime/


1

Per eliminare i simulatori per versione iOS:

Se desideri rimuovere solo i simulatori per una versione specifica e ti è capitato di aver fastlaneinstallato, puoi avviare una shell ruby ​​interattiva ed eseguire i seguenti comandi per rimuovere tutti i simulatori 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")
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.