Czy mogę usunąć niepotrzebne symulatory urządzeń Xcode?


64

Odkryłem, że Xcode na moim laptopie zużywa dużo miejsca, więc próbuję usunąć niepotrzebne pliki w Xcode.

Istnieją cztery katalogi poniżej Application/Xcode.app/Contents/Developer/Platforms/. Czuję to WatchSimulator.platformi AppleTVSimulator.platformnie jest to konieczne, ponieważ Xcode używam prawie tylko do podstawowego programowania iOS.

Chciałbym wiedzieć, czy mogę bezpośrednio usunąć katalogi tych platform?

Katalogi


Po prostu FYI ... Zyskasz tylko około połowy pokazanego miejsca, ponieważ wydają się być skompresowane. Spójrz na arkusz Get Info, np. W moim systemie dla WatchOS.platform pokazuje 50 579 830 bajtów (28,2 MB na dysku) dla 2212 elementów, a AppleTVSimulator.platform pokazuje 1 865 472 277 bajtów (1,1 GB na dysku) dla 29 705 elementów. Więc nie zyskasz tyle wolnego miejsca, ile wartości pokazane w OP.
user3439894,

Pliki są skompresowane, a system plików HFS + firmy Apple obsługuje przezroczystą kompresję, ale Finder i lsTerminal nie mają flagi, aby zobaczyć, że plik korzysta z hfsCompression , bez arkusza informacji, w którym można zobaczyć, że wartość na dysku jest dramatycznie inna niż rozmiar w bajtach . Istnieje narzędzie napisane przez osobę trzecią, które zawiera kod źródłowy, jeśli chce się go samodzielnie skompilować, afsctool . Wśród jego możliwości jest uzyskanie informacji o istniejących skompresowanych plikach HFS +.
user3439894,

Jaki program pomaga ustalić te duże pliki na dysku?
Pysis

1
@Pysis Dla mnie wygląda jak OmniDiskSweeper . To narzędzie nie zostało zaktualizowane do APFS i kompresji, choć wygląda na to, że mają teraz kilka nowych wersji testowych.
Zach Lipton

1
@Zach Lipton, jeśli w OP działa High Sierra i APFS, pliki mogą nie zostać skompresowane, ponieważ APFS nie obsługuje jeszcze kompresji. Czy ta zmiana uległa zmianie w 10.13.1?
user3439894,

Odpowiedzi:


63

Tak, możesz usunąć dowolny nieużywany symulator. Robię to rutynowo, gdy przestaję obsługiwać starsze wersje iOS.

Jeśli je usuniesz, a okaże się, że będziesz ich potrzebować w przyszłości, możesz pobrać je ponownie ze strony programisty Apple.

Najlepszym sposobem na ich usunięcie jest Xcode. Idź do Window -> Devices and Simulators. Spowoduje to otwarcie nowego okna ze wszystkimi urządzeniami używanymi w Xcode.

Na górze dotknij, Simulatorsa zobaczysz listę po lewej stronie.

Stamtąd znajdź symulator, który chcesz usunąć, i Cntl- kliknij (lub kliknij prawym przyciskiem myszy) i wybierz Delete.

Robię to z każdym symulatorem, który działa w każdej wersji iOS, której już nie obsługuję.


7
Wiem, że ten post ma kilka lat, ale nie wydaje się, aby usuwał symulator, ale raczej jego listę w Xcode. Więc jeśli trzeba go usunąć, aby zaoszczędzić miejsce na dysku, nie jest to właściwa metoda.
Sean Patterson

34

Xcode udostępnia teraz symulatory wszystkim użytkownikom. Musisz więc usunąć symulatory z następującego folderu:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Na przykład:

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

Twoje zdrowie!


29

Za pomocą tego polecenia w terminalu możesz łatwo usunąć wszystkie niedostępne symulatory:

xcrun simctl delete unavailable

1
W rzeczywistości niewiele to robi. Po uruchomieniu xcrun simctl listzobaczysz, że tylko ~ 10% urządzeń uważa się za „niedostępne”. Także urządzenia nie są tutaj prawdziwymi kosmicznymi świniami. środowiska uruchomieniowe iOS są. @ Odpowiedź Francoisa jest znacznie lepsza w praktyce.
joshuakcockrell

1
@joshuakcockrell Niekoniecznie; po latach gromadzenia przestarzałych wersji symulatorów uwolniło to absurdalnie dużo miejsca w moim przypadku. Więc myślę, że ymmv.
Paul Cantrell,

Naliczyłem ( wc -l) 148 linii na liście z „niedostępnymi” i 128 wyjściami. Powyższe polecenie usunięcia zwróciło mi 14 GB
Craig

15

Pomimo odpowiedzi @ fsb pozwala usunąć „wystąpienia” symulatora, właściwym sposobem na zwolnienie ogromnej przestrzeni używanej przez stare platformy symulatorów, które nie są już potrzebne, jest przejście do następującego folderu:

~/Library/Developer/Xcode/iOS DeviceSupport

i usuń foldery odpowiadające symulatorowi / platformom, których już nie potrzebujesz.

Dodatkowo jest bardzo dobry artykuł z innymi tymi i innymi wskazówkami:


3
wygląda na to, że /Library/Developer/Xcodezostał usunięty po nowej aktualizacji systemu macOS. Nigdzie nie mogę tego znaleźć.
Suhaib

1
@ Suhaib zapomniałeś początkowej tyldy „ ~ ”, która powoduje, że ścieżka zaczyna się w twoim katalogu domowym. Prawo katalogu jest: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso,

7

Gdzie Xcode przechowuje symulatory w 2019+ Catalina, Xcode 11.0

Runtimes

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

Na przykład iOS 13.0, watchOS 6.0Przyjmują one najwięcej miejsca, zdecydowanie. Każdy może mieć do ~ 5 GB

Pomysłowość

$ open ~/Library/Developer/CoreSimulator/Devices

Na przykład: iPhone Xr, iPhone 11 Pro Max. Zazwyczaj są one mniejsze niż 15 mb.

Wyjaśnienie

Symulatory są podzielone między środowiska wykonawcze i urządzenia. Jeśli uruchomisz $ xcrun simctl list, zobaczysz przegląd, ale jeśli chcesz znaleźć fizyczną lokalizację tych symulatorów, zajrzyj do tych katalogów, które pokazałem.

Usuwanie środowisk uruchomieniowych, które nie są obsługiwane, jest całkowicie bezpieczne. Możesz zainstalować je później, jeśli chcesz.


1
Dziękuję, bardzo mi to pomogło!
acido

5
  • aby wyświetlić listę wszystkich symulatorów xcrun simctl list deviceslubxcrun simctl list --json

  • aby usunąć określone urządzenie xcrun simctl delete <device udid>

  • aby usunąć stare urządzenia dla środowisk wykonawczych, które nie są już obsługiwane xcrun simctl delete unavailable


xcrun simctl delete allprzypuszczam, że możesz użyć
revau.lt

1

Otwórz Terminal.app i uruchom następujące polecenie:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Teraz wpisz poniżej wersję iOS, dla której chcesz usunąć symulatory, na przykład, jeśli chcesz usunąć dla iOS 12.0, uruchom:

sudo rm -rf iOS\ 12.0.simruntime/


1

Aby usunąć symulatory według wersji iOS:

Jeśli chcesz usunąć tylko symulatory dla określonej wersji, a akurat masz fastlanezainstalowane, możesz uruchomić interaktywną powłokę Ruby i uruchomić następujące polecenia, aby usunąć wszystkie symulatory 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")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.