¿Puedo eliminar simuladores de dispositivo innecesarios de Xcode?

64

Descubrí que Xcode en mi computadora portátil consume gran parte de su almacenamiento, por lo que estoy tratando de eliminar archivos innecesarios en Xcode.

Hay cuatro directorios debajo Application/Xcode.app/Contents/Developer/Platforms/. Siento eso WatchSimulator.platformy AppleTVSimulator.platformno es necesario, porque uso Xcode casi solo para el desarrollo básico de iOS.

Me gustaría saber si puedo eliminar esos directorios de plataformas directamente.

Directorios

IzumiSy
fuente
Solo un FYI ... Solo ganarás aproximadamente la mitad del espacio que se muestra, ya que parecen estar comprimidos. Mire la hoja Obtener información, por ejemplo, en mi sistema para WatchOS.platform muestra 50,579,830 bytes (28.2 MB en disco) para 2,212 elementos y AppleTVSimulator.platform muestra 1,865,477,227 bytes (1.1 GB en disco) para 29,705 elementos. Por lo tanto, no va a ganar tanto espacio libre como los valores que se muestran en su OP.
user3439894
Los archivos están comprimidos y el sistema de archivos HFS + de Apples admite la compresión transparente, pero Finder y lsen la terminal carece de un indicador para ver que un archivo está usando hfsCompression , sin la hoja de información de obtención donde puede ver que el valor en el disco es dramáticamente diferente y el tamaño se muestra en bytes . Hay una utilidad escrita por un tercero, que incluye el código fuente si se desea compilarlo, afsctool . Entre sus capacidades se encuentra obtener información sobre los archivos comprimidos HFS + existentes.
user3439894
¿Qué programa te ayuda a determinar estos archivos grandes en tu disco?
Pysis
1
@Pysis Me parece OmniDiskSweeper . Esa herramienta no se ha actualizado para APFS y compresión, aunque parece que ahora tienen algunas nuevas versiones de prueba.
Zach Lipton el
1
@Zach Lipton, si el OP está ejecutando High Sierra y APFS, entonces los archivos pueden no estar comprimidos porque APFS aún no admite compresión. ¿O esto cambió en 10.13.1?
user3439894

Respuestas:

63

Sí, puedes eliminar cualquier simulador que no uses. Hago esto rutinariamente cuando dejo de admitir versiones anteriores de iOS.

Si los elimina y luego descubre que los necesita en algún momento en el futuro, puede volver a descargarlos desde el sitio de desarrolladores de Apple.

La mejor manera de eliminarlos es en Xcode. Ir a Window -> Devices and Simulators. Esto abrirá una nueva ventana con todos los dispositivos que usa en Xcode.

En la parte superior, toque Simulatorsy verá una lista en el lado izquierdo.

Desde allí, encuentre el simulador que desea eliminar y Cntlhaga clic (o haga clic con el botón derecho) y seleccione Delete.

Hago esto con cada simulador que se ejecuta en cada versión de iOS que ya no soporto.

fsb
fuente
8
Sé que esta publicación tiene un par de años, pero esto no parece eliminar el simulador, sino solo la lista en Xcode. Entonces, si uno necesita eliminarlo para ahorrar espacio en disco, este no es el método correcto.
Sean Patterson
34

Xcode ahora comparte los simuladores con todos los usuarios. Por lo tanto, debe eliminar los simuladores de la siguiente carpeta:

/Library/Developer/CoreSimulator/Profiles/Runtimes

Por ejemplo:

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

¡Aclamaciones!

Francois Nadeau
fuente
29

Puede eliminar fácilmente todos los simuladores no disponibles con este comando en el terminal:

xcrun simctl delete unavailable
berilio
fuente
1
En realidad, esto no hace mucho. Si ejecuta xcrun simctl list, verá que solo ~ 10% de los dispositivos se consideran "no disponibles". Además, los dispositivos no son los verdaderos cerdos del espacio aquí. Los tiempos de ejecución de iOS son. La respuesta de @ Francois es mucho mejor en la práctica.
Joshuakcockrell
1
@joshuakcockrell No necesariamente; Después de años de acumular versiones obsoletas de simuladores, esto liberó una cantidad ridícula de espacio en mi caso. Así que supongo que mmm.
Paul Cantrell
Conté ( wc -l) 148 líneas en la lista con 'no disponible' y 128 fuera. El comando de eliminación anterior me devolvió 14 GB
Craig
15

A pesar de que la respuesta de @ fsb permite eliminar las "instancias" del simulador, la forma correcta de liberar un espacio masivo utilizado por las plataformas de simulador antiguas que ya no se necesita es ir a la siguiente carpeta:

~/Library/Developer/Xcode/iOS DeviceSupport

y elimine las carpetas correspondientes al simulador / plataformas que ya no necesita.

Además, hay un muy buen artículo con este y otros consejos:

Ricardo Barroso
fuente
3
parece que /Library/Developer/Xcodese ha eliminado después de la nueva actualización de macOS. No puedo encontrarlo por ninguna parte.
Suhaib
1
@Suhaib olvidó la tilde inicial " ~ " que hace que la ruta comience en su directorio de inicio. El directorio correcto es: ~/Library/Developer/Xcode/iOS DeviceSupport.
Ricardo Barroso
7

Donde Xcode almacena simuladores en 2019+ Catalina, Xcode 11.0

Tiempos de ejecución

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

Por ejemplo: iOS 13.0, watchOS 6.0Éstos toman la mayoría del espacio, con diferencia. Cada uno puede tener hasta ~ 5 GB

Dispositivos

$ open ~/Library/Developer/CoreSimulator/Devices

Por ejemplo: iPhone Xr, iPhone 11 Pro Max. Estos son típicamente <15 mb cada uno.

Explicación

Los simuladores se dividen entre tiempos de ejecución y dispositivos. Si ejecuta $ xcrun simctl list, puede ver una descripción general, pero si desea encontrar la ubicación física de estos simuladores, busque en los directorios que he mostrado.

Es totalmente seguro eliminar tiempos de ejecución que no admite. Puede reinstalarlos más tarde si lo desea.

joshuakcockrell
fuente
1
¡Gracias, esto me ayudó mucho!
acido
5
  • para enumerar todos los simuladores xcrun simctl list devicesoxcrun simctl list --json

  • para eliminar un dispositivo específico xcrun simctl delete <device udid>

  • eliminar dispositivos antiguos para tiempos de ejecución que ya no son compatibles xcrun simctl delete unavailable

Jasmeet Singh
fuente
puedes usar xcrun simctl delete all, supongo
revau.lt
1

Abra Terminal.app y ejecute lo siguiente:

cd /Library/Developer/CoreSimulator/Profiles/Runtimes

Ahora escriba la versión de iOS para la que desea eliminar los simuladores en el siguiente comando, por ejemplo, si desea eliminar para iOS 12.0, ejecute:

sudo rm -rf iOS\ 12.0.simruntime/

Tejinder
fuente
1

Para eliminar simuladores por versión de iOS:

Si solo desea eliminar los simuladores de una versión específica y está fastlaneinstalado, puede iniciar un shell ruby ​​interactivo y ejecutar los siguientes comandos para eliminar todos los simuladores de 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
fuente