Kann ich unnötige Gerätesimulatoren von Xcode löschen?

64

Ich habe festgestellt, dass Xcode auf meinem Laptop viel Speicherplatz beansprucht. Daher versuche ich, unnötige Dateien in Xcode zu löschen.

Es gibt vier Verzeichnisse unter Application/Xcode.app/Contents/Developer/Platforms/. Ich fühle das WatchSimulator.platformund bin AppleTVSimulator.platformnicht notwendig, weil ich Xcode fast nur für die grundlegende iOS-Entwicklung benutze.

Ich möchte wissen, ob ich diese Plattformverzeichnisse direkt löschen kann.

Verzeichnisse

IzumiSy
quelle
Nur zu Ihrer Information ... Sie werden nur ungefähr die Hälfte des angezeigten Platzes gewinnen, da sie komprimiert zu sein scheinen. Schauen Sie sich das Get Info Sheet an, z. B. zeigt es auf meinem System für WatchOS.platform 50.579.830 Bytes (28,2 MB auf der Festplatte) für 2.212 Artikel und AppleTVSimulator.platform zeigt 1.865.477.227 Bytes (1,1 GB auf der Festplatte) für 29.705 Artikel. So gewinnen Sie nicht so viel freien Speicherplatz wie die in Ihrem OP angezeigten Werte.
user3439894
Die Dateien sind komprimiert und das HFS + -Dateisystem von Apples unterstützt die transparente Komprimierung, aber Finder und lsTerminal verfügen nicht über eine Markierung , mit der festgestellt werden kann , dass eine Datei hfsCompression verwendet. In diesem Informationsblatt wird angezeigt , dass der Wert auf der Festplatte erheblich von der in Byte angezeigten Größe abweicht . Es gibt ein Dienstprogramm, das von einem Drittanbieter geschrieben wurde und den Quellcode enthält, wenn man ihn selbst kompilieren möchte: afsctool . Zu seinen Funktionen gehört das Abrufen von Informationen zu vorhandenen HFS + -komprimierten Dateien.
user3439894
Mit welchem ​​Programm können Sie diese großen Dateien auf Ihrem Laufwerk ermitteln?
Pysis
1
@ Pysis Sieht für mich nach OmniDiskSweeper aus . Dieses Tool wurde nicht für APFS und Komprimierung aktualisiert, obwohl es den Anschein hat, als hätten sie jetzt einige neue Test-Builds herausgebracht.
Zach Lipton
1
@ Zach Lipton, Wenn auf dem OP High Sierra und APFS ausgeführt werden, werden die Dateien möglicherweise nicht komprimiert, da APFS die Komprimierung noch nicht unterstützt. Oder hat sich das in 10.13.1 geändert?
user3439894

Antworten:

63

Ja, Sie können jeden Simulator löschen, den Sie nicht verwenden. Ich mache das routinemäßig, wenn ich ältere iOS-Versionen nicht mehr unterstütze.

Wenn Sie sie löschen und später feststellen, dass Sie sie benötigen, können Sie sie von der Entwickler-Website von Apple herunterladen.

Der beste Weg, sie zu löschen, ist in Xcode. Gehe zu Window -> Devices and Simulators. Dies öffnet ein neues Fenster mit allen Geräten, die Sie in Xcode verwenden.

Tippen SimulatorsSie oben auf und Sie sehen eine Liste auf der linken Seite.

Suchen Sie dort den Simulator, den Sie löschen möchten, und Cntl- klicken Sie (oder klicken Sie mit der rechten Maustaste) und wählen Sie Delete.

Ich mache das mit jedem Simulator, der in jeder iOS-Version läuft, die ich nicht mehr unterstütze.

fsb
quelle
7
Ich weiß, dass dieser Beitrag ein paar Jahre alt ist, aber dies scheint den Simulator nicht zu entfernen, sondern nur die Auflistung in Xcode. Wenn Sie es also entfernen müssen, um Speicherplatz zu sparen, ist dies nicht die richtige Methode.
Sean Patterson
34

Xcode teilt nun die Simulatoren mit allen Benutzern. Daher müssen Sie die Simulatoren aus dem folgenden Ordner entfernen:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Beispielsweise:

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

Prost!

François Nadeau
quelle
29

Sie können alle nicht verfügbaren Simulatoren mit diesem Befehl im Terminal leicht entfernen:

xcrun simctl delete unavailable
Beryllium
quelle
1
In Wirklichkeit macht das nicht viel. Wenn Sie ausführen, werden xcrun simctl listSie feststellen, dass nur ~ 10% der Geräte als "nicht verfügbar" gelten. Auch Geräte sind hier nicht die echten Weltraumfresser. iOS-Laufzeiten sind. @Francois Antwort ist in der Praxis viel besser.
Joshuakcockrell
1
@ Joshuakcockrell Nicht unbedingt; Nach Jahren der Ansammlung veralteter Simulatorversionen hat dies in meinem Fall eine lächerliche Menge an Speicherplatz freigesetzt. Also denke ich ymmv.
Paul Cantrell
Ich habe ( wc -l) 148 Zeilen in der Liste mit "nicht verfügbar" und 128 Zeilen mit "nicht verfügbar" gezählt. Der obige Löschbefehl gab mir 14 GB zurück
Craig vor
15

Obwohl die Antwort von @ fsb das Löschen von Simulator- "Instanzen" ermöglicht, wird der richtige Weg, um einen riesigen Speicherplatz freizugeben, der von alten Simulatorplattformen verwendet wird, die nicht mehr benötigt werden, in den folgenden Ordner verschoben:

~/Library/Developer/Xcode/iOS DeviceSupport

und entfernen Sie die Ordner für die Simulatoren / Plattformen, die Sie nicht mehr benötigen.

Zusätzlich gibt es einen sehr guten Artikel mit weiteren Tipps:

Ricardo Barroso
quelle
3
es scheint, dass /Library/Developer/Xcodenach dem neuen MacOS-Update entfernt wurde. Ich kann es nirgendwo finden.
Suhaib
1
@Suhaib Sie haben die ursprüngliche Tilde " ~ " vergessen, mit der der Pfad in Ihrem Ausgangsverzeichnis beginnt. Das richtige Verzeichnis ist: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso
6

Wo Xcode Simulatoren im Jahr 2019+ speichert Catalina, Xcode 11.0

Laufzeiten

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

Zum Beispiel: iOS 13.0, watchOS 6.0nehmen diese den meisten Platz, bei weitem. Jeder kann bis zu ~ 5 GB groß sein

Geräte

$ open ~/Library/Developer/CoreSimulator/Devices

Zum Beispiel: iPhone Xr, iPhone 11 Pro Max. Dies sind typischerweise jeweils <15 mb.

Erläuterung

Simulatoren werden zwischen Laufzeiten und Geräten aufgeteilt. Wenn Sie ausführen $ xcrun simctl list, wird eine Übersicht angezeigt. Wenn Sie jedoch den physischen Standort dieser Simulatoren ermitteln möchten, sehen Sie in den von mir angezeigten Verzeichnissen nach.

Es ist absolut sicher, Laufzeiten zu löschen, die Sie nicht unterstützen. Sie können diese später erneut installieren, wenn Sie möchten.

Joshuakcockrell
quelle
1
Danke, das hat mir sehr geholfen!
acido
5
  • um alle Simulatoren aufzulisten xcrun simctl list devicesoderxcrun simctl list --json

  • um ein bestimmtes Gerät zu löschen xcrun simctl delete <device udid>

  • Entfernen alter Geräte für Laufzeiten, die nicht mehr unterstützt werden xcrun simctl delete unavailable

Jasmeet Singh
quelle
Sie können verwenden, xcrun simctl delete allnehme ich an
revau.lt
1

Öffnen Sie Terminal.app und führen Sie Folgendes aus:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Geben Sie nun die iOS-Version, für die Sie Simulatoren entfernen möchten, in den folgenden Befehl ein. Wenn Sie beispielsweise für iOS 12.0 entfernen möchten, führen Sie Folgendes aus:

sudo rm -rf iOS\ 12.0.simruntime/

Tejinder
quelle
1

So löschen Sie Simulatoren nach iOS-Version:

Wenn Sie nur Simulatoren für eine bestimmte Version entfernen möchten und diese fastlaneinstalliert haben, können Sie eine interaktive Ruby-Shell starten und die folgenden Befehle ausführen, um alle iOS 10-Simulatoren zu entfernen:

# 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
quelle