Puis-je supprimer les simulateurs de périphériques inutiles de Xcode?

64

J'ai trouvé que Xcode sur mon ordinateur portable consomme une grande partie de son stockage, donc j'essaie de supprimer les fichiers inutiles dans Xcode.

Il y a quatre répertoires sous Application/Xcode.app/Contents/Developer/Platforms/. Je pense que WatchSimulator.platformet AppleTVSimulator.platformne sont pas nécessaires, parce que j'utilise Xcode presque seulement pour le développement iOS de base.

Je voudrais savoir si je peux supprimer directement les répertoires de ces plateformes?

Répertoires

IzumiSy
la source
Juste un FYI ... Vous ne gagnerez qu'environ la moitié de l'espace indiqué, car ils semblent compressés. Regardez la feuille Get Info, par exemple sur mon système pour WatchOS.platform, elle affiche 50 579 830 octets (28,2 Mo sur le disque) pour 2 212 éléments et AppleTVSimulator.platform affiche 1 865 477 227 octets (1,1 Go sur le disque) pour 29 705 éléments. Vous n'allez donc pas gagner autant d'espace libre que les valeurs affichées dans votre OP.
user3439894
Les fichiers sont compressés et le système de fichiers HFS + d'Apples prend en charge la compression transparente, mais le Finder et lsdans Terminal n'a pas d'indicateur pour voir qu'un fichier utilise hfsCompression , sans la feuille Get Info où vous pouvez voir la valeur sur le disque est radicalement différente, puis la taille indiquée en octets . Il existe un utilitaire écrit par un tiers, qui inclut le code source si l'on veut le compiler lui-même, afsctool . L'une de ses capacités consiste à obtenir des informations sur les fichiers compressés HFS + existants.
user3439894
Quel programme vous aide à déterminer ces gros fichiers sur votre disque?
Pysis
1
@Pysis ressemble à OmniDiskSweeper pour moi. Cet outil n'a pas été mis à jour pour APFS et la compression, bien qu'il semble qu'ils aient maintenant de nouvelles versions de test.
Zach Lipton
1
@Zach Lipton, Si l'OP exécute High Sierra et APFS, les fichiers peuvent ne pas être compressés car APFS ne prend pas encore en charge la compression. Ou est-ce que cela a changé en 10.13.1?
user3439894

Réponses:

63

Oui, vous pouvez supprimer tout simulateur que vous n'utilisez pas. Je le fais régulièrement lorsque j'arrête de prendre en charge les anciennes versions d'iOS.

Si vous les supprimez et que vous constatez que vous en aurez besoin à un moment donné dans le futur, vous pouvez les télécharger à nouveau à partir du site de développement d'Apple.

La meilleure façon de les supprimer est dans Xcode. Allez à Window -> Devices and Simulators. Cela ouvrira une nouvelle fenêtre avec tous les appareils que vous utilisez dans Xcode.

En haut, appuyez sur Simulatorset vous verrez une liste sur le côté gauche.

À partir de là, trouvez le simulateur que vous souhaitez supprimer et Cntl- cliquez (ou cliquez avec le bouton droit) et sélectionnez Delete.

Je le fais avec chaque simulateur qui fonctionne dans chaque version iOS que je ne supporte plus.

fsb
la source
8
Je sais que ce message a quelques années, mais cela ne semble pas supprimer le simulateur, mais plutôt sa liste dans Xcode. Donc, si l'on devait le supprimer pour économiser de l'espace disque, ce n'est pas la bonne méthode.
Sean Patterson
34

Xcode partage désormais les simulateurs avec tous les utilisateurs. Vous devez donc supprimer les simulateurs du dossier suivant:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Par exemple:

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

À votre santé!

François Nadeau
la source
29

Vous pouvez facilement supprimer tous les simulateurs indisponibles avec cette commande dans le terminal:

xcrun simctl delete unavailable
béryllium
la source
1
En réalité, cela ne fait pas grand-chose. Si vous exécutez, xcrun simctl listvous verrez que seulement ~ 10% des appareils sont considérés comme "indisponibles". De plus, les appareils ne sont pas les vrais porcs spatiaux ici. Les runtimes iOS le sont. @ La réponse de François est bien meilleure en pratique.
joshuakcockrell
1
@joshuakcockrell Pas nécessairement; après des années d'accumulation de versions de simulateur obsolètes, cela a libéré une quantité ridicule d'espace dans mon cas. Donc je suppose que ymmv.
Paul Cantrell
J'ai compté ( wc -l) 148 lignes dans la liste avec «indisponible» et 128 sorties. La commande de suppression ci-dessus m'a redonné 14 Go
Craig
15

Malgré la réponse de @ fsb qui permet de supprimer les "instances" du simulateur, le bon moyen de libérer un espace massif utilisé par les anciennes plates-formes de simulation n'est plus nécessaire va dans le dossier suivant:

~/Library/Developer/Xcode/iOS DeviceSupport

et supprimez les dossiers correspondant au simulateur / plateformes dont vous n'avez plus besoin.

De plus, il y a un très bon article avec d'autres ceci et d'autres conseils:

Ricardo Barroso
la source
3
il semble que cela /Library/Developer/Xcodeait été supprimé après la nouvelle mise à jour de macOS. Je ne peux le trouver nul part.
Suhaib
1
@Suhaib vous avez oublié le tilde initial " ~ " qui fait démarrer le chemin sur votre répertoire personnel. Le répertoire est à droite: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso
7

Où Xcode stocke les simulateurs dans Catalina 2019+, Xcode 11.0

Runtimes

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

Par exemple:, ceux iOS 13.0- watchOS 6.0ci prennent de loin le plus d'espace. Chacun peut avoir jusqu'à ~ 5 Go

Dispositifs

$ open ~/Library/Developer/CoreSimulator/Devices

Par exemple: iPhone Xr, iPhone 11 Pro Max. Ce sont généralement <15 Mo chacun.

Explication

Les simulateurs sont répartis entre les temps d'exécution et les appareils. Si vous exécutez, $ xcrun simctl listvous pouvez voir un aperçu, mais si vous voulez trouver l'emplacement physique de ces simulateurs, regardez dans les répertoires que j'ai montrés.

Il est totalement sûr de supprimer les runtimes que vous ne supportez pas. Vous pouvez les réinstaller plus tard si vous le souhaitez.

joshuakcockrell
la source
1
Merci, cela m'a beaucoup aidé!
acido
5
  • pour répertorier tous les simulateurs xcrun simctl list devicesouxcrun simctl list --json

  • supprimer un appareil spécifique xcrun simctl delete <device udid>

  • supprimer les anciens appareils pour les temps d'exécution qui ne sont plus pris en charge xcrun simctl delete unavailable

Jasmeet Singh
la source
vous pouvez utiliser xcrun simctl delete allje suppose
revau.lt
1

Ouvrez Terminal.app et exécutez ce qui suit:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Tapez maintenant la version iOS pour laquelle vous souhaitez supprimer les simulateurs dans la commande ci-dessous, par exemple, si vous souhaitez supprimer pour iOS 12.0, exécutez:

sudo rm -rf iOS\ 12.0.simruntime/

Tejinder
la source
1

Pour supprimer des simulateurs par version iOS:

Si vous souhaitez uniquement supprimer des simulateurs pour une version spécifique et que vous avez fastlaneinstallé, vous pouvez lancer un shell ruby ​​interactif et exécuter les commandes suivantes pour supprimer tous les simulateurs 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
la source