Solución:
¡POR FAVOR LEA ESTO PRIMERO!
Veo por los comentarios recientes que algunos de ustedes están experimentando problemas con esta solución al usar las últimas versiones de Xcode, que se ejecutan en macOS Catalina.
Hasta nuevo aviso, esta respuesta solo es válida para: versiones de Xcode <= 11,3
¡Seguiré agregando información hacia la parte inferior de la respuesta si / cuando descubra las cosas!
Instalación de Xcode y amigos en una unidad externa
Como se mencionó en los comentarios, si ya tiene Xcode instalado, el proceso es bastante simple. Comience copiando Xcode desde el disco duro interno a una unidad externa, cambie el nombre del original y ejecute los comandos de los pasos 4 y 5, y esto debería funcionar. Si es así, elimine el paquete de directorio / aplicación original (ahora renombrado).
Mi experiencia es que si aún no tienes Xcode, el proceso es un poco más complicado.
Puede haber formas más sencillas de hacer esto, pero después de obtener diferentes errores para cada cosa que probé, lo hice de esta manera en una MacBook Pro de 16 “con
macOS Catalina (10.15.2) y Xcode 11.3:
Tengo mi disco externo conectado a la MacBook en todo momento, usando un poco de Velcro ya que el disco Samsung T5 que uso es muy pequeño y liviano. Está montado en:
/Volumes/SSD
En la unidad externa he copiado Xcode en:
/Volumes/SSD/Applications
Siga este procedimiento para instalar Xcode:
-
Descargue la última versión 11.3 de Xcode (no la Beta) del sitio de desarrolladores de Apple (esta es una descarga de 7.3GB y, por cierto, debe registrarse para obtener una cuenta de desarrollador gratuita)
-
Instale las herramientas de línea de comandos de Xcode (en la unidad interna), que se pueden activar ejecutando el siguiente comando en una terminal:
sudo xcode-select --install
Esto activará la instalación de las herramientas de la línea de comandos y establecerá la
/Library/Developer/CommandLineTools
path y configúrelo como la ruta predeterminada de las herramientas de desarrollador después de la instalación. -
Ahora, la descarga de Xcode viene como un archivo .xip que debe expandirse / descomprimirse usando la Utilidad de archivo incluida con macOS.
Ya creé un directorio en el SSD:
/Volumes/SSD/Applications
y movió el archivo Xcode_11_3.xip aquí antes de extraerlo haciendo doble clic en él en el Finder.
NOTA:
Se descomprimirá en la misma carpeta que el archivo .xip, en Xcode.app pero también deja allí el archivo .xip de 7.3GB. Después de desempaquetarlo, puede mover el archivo .xip a algún lugar para hacer una copia de seguridad o simplemente eliminarlo. -
Ahora cambie el directorio de herramientas de desarrollador predeterminado con el comando:
sudo xcode-select -s /Volumes/SSD/Applications/Xcode.app/Contents/Developer
entonces haz otrozsh -l
o reinicie Terminal.app. -
Después de configurar Xcode.app como el directorio de herramientas de desarrollador predeterminado, ejecute este comando para que Xcode se dé cuenta por sí mismo:
/usr/bin/xcrun --find xcodebuild
Esto tomó un poco de tiempo, luego volví:
/Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild
Mover los simuladores / emuladores
Los simuladores, cachés y todo eso también ocupa una cantidad considerable de espacio pero vive en otro lugar.
Para Xcode, los simuladores normalmente se encuentran dentro de:
~/Library/Developer/CoreSimulator
Querrá mover toda esta estructura de directorios a su unidad externa si está buscando maximizar el espacio disponible en la unidad local. Puede usar una operación de movimiento regular a través de Finder.app haciendo primero un ⌘ + C (cmd + c) para copiar ~/Library/Developer/CoreSimulator
luego en la ubicación de destino, Puedes usar ⌥ + ⌘ + V
(opt + cmd + v) para mover el contenido copiado directamente (puede requerir contraseña de administrador).
yo suelo /Volumes/SSD/Library/Developer/
Solo tenía que mencionar esto, ya que muchos no saben cómo “cortar y pegar” correctamente los archivos en el Finder, y terminan copiando primero y luego volviendo a eliminar … 🙂
Ahora crea un enlace simbólico usando:
ln -s /Volumes/SSD/Library/Developer/CoreSimulator /Users/<your_user>/Library/Developer
Ahora debería poder usar y actualizar los simuladores como de costumbre. La primera ejecución puede arrojar un error, pero las ejecuciones posteriores deberían estar bien. A veces, un reinicio también puede ser algo bueno …
Los emuladores de Android se encuentran por defecto en algún lugar debajo
~/.android/
Utilice el mismo procedimiento que para los simuladores de Xcode para mover todo ~/.android
directorio a un lugar en su disco externo y enlace simbólico como se describe, por lo que termina con algo como:
.android -> /Volumes/SSD/Library/android
cuando haces un $ ls -la ~
en tu Terminal.
Nota para los usuarios de Homebrew
Si está utilizando Homebrew para instalar paquetes (como muchos lo hacen), parece que Homebrew no registrará que tiene CommandLineTools instalado si mueve el
/Library/Developer/CommandLineTools
directorio, e intentará compilar algunas botellas desde el código fuente.
Homebrew aparentemente necesita algunas herramientas que se encuentran en el paquete de herramientas de línea de comandos independiente instalado con sudo xcode-select --install
eso falta en la instalación regular de Xcode (noté esto cuando actualicé a una nueva versión de Python, todavía se estaba compilando desde la fuente sin importar lo que intenté).
Entonces, si usa Homebrew, probablemente esté mejor manteniendo las herramientas de línea de comandos instaladas en la ubicación predeterminada.
Simplemente instale como se describe con el sudo xcode-select --install
comando y déjelo allí, no ocupa mucho espacio de todos modos.
También, recuerde aceptar las licencias de xcodebuild antes de usar una herramienta que dependa de ella, usando un comando como este (con su propia ruta):
sudo /Volumes/SSD/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild -license accept
Como dije, puede haber soluciones más simples, pero después de hacerlo de esta manera, he podido usar Homebrew sin errores y las herramientas Xcode + con los marcos MacOS, iOS y Flutter.
Además, he creado un alias para Xcode.app en /Applications
para colocarlo convenientemente junto con las otras aplicaciones. (Cmd + Opt arrastra Xcode.app a / Aplicaciones en Finder). Me ahorré una tonelada de espacio en el disco interno de esta manera.
En respuesta a las preguntas en los comentarios:
¿Puedo actualizar Xcode / Simulators después de usar este método?
Siempre que cree un “alias” antiguo desde el Xcode.app de la unidad externa para /Applications/Xcode.app
arrastrando la aplicación mientras mantienes presionada ⌥ + ⌘
, No he tenido problemas para actualizar, PERO Actualizo descargando desde el sitio de desarrolladores de Apple, no a través de macOS AppStore, ya que he notado que AppStore no acepta el alias y cree que Xcode no está instalado.
Actualizaciones con respecto a las versiones de Xcode> 11.3
Como mencioné en la parte superior de la respuesta, no puedo responder por esta respuesta si está utilizando una versión de Xcode superior a 11.3.
Pasé por todos los pasos usando una instalación nueva en una máquina nueva.
Experimenté un par de cosas asombrosas mientras trataba de resolver esto, y solo tenía un tiempo limitado para hacer esto. Los problemas fueron un poco más complicados de lo esperado.
HACER:
✅ El disco llegó hoy (martes 8 de septiembre)
✅ Instale archivos de desarrollo macOS, Xcode, Android SDK y Flutter SDK
✅ Mueva Flutter SDK, Android SDK y emulador de Android a SSD externo
✅ Mueva los archivos del simulador de iOS a un SSD externo
[] FALLIDO: Mueva los archivos Xcode y Platform a un SSD externo
✅ Adapte las variables de entorno / scripts de Zsh para reflejar los cambios
Parece que aquellos que tienen SIP habilitado (probablemente la mayoría de los usuarios) se meterán en problemas al acceder a las herramientas desde el paquete de la aplicación Xcode si se mueve fuera de la unidad interna.
No estoy seguro de si esto se comporta igual en máquinas sin el chip de seguridad T2, se agradece la entrada en esto.
Puede pensar que “hey, tengo mis herramientas en /usr/bin
o en otro lugar, pero el problema es que estos archivos son simplemente binarios de shim, que utilizan una biblioteca del sistema para resolver una ruta a un Desarrollador directorio, donde se instalan todos los archivos ejecutables, bibliotecas y archivos de soporte.
Esto complica aún más las cosas, ya que ahora ya no sabe exactamente cuáles de estos archivos están en uso real. Intenta hacer:
$ otool -L /usr/bin/xcrun
# or
$ otool -L /usr/bin/xcode-select
Y vea lo que se derrama … Lo mismo ocurre con la mayoría de las herramientas.
Si desmontas /usr/lib/libxcselect.dylib
(¿Está permitido?) Aparentemente, se están realizando algunas comprobaciones adicionales al ejecutar Xcode después de la versión 11.3.
Volví y verifiqué y la configuración tenía estas pruebas disponibles para algunas versiones, pero no se han activado en versiones anteriores de consumidores.
Entonces cuando un cambio de directorio se intenta como se describe en mi respuesta original, el libxcselect
La herramienta ahora realizará al menos una verificación (in) de cordura para garantizar que Xcode y sus herramientas se ejecuten desde el almacenamiento interno (seguro), que tiene una configuración de sistema inmutable protegida por SIP. Protección de la integridad del sistema, por lo que no puede simplemente moverlo o eliminarlo.
Supongo que tendrá que deshabilitar SIP para poder hacer que esto funcione, y eso es no es una solución aceptable, ya que se abre a muchos problemas de seguridad y estabilidad (incluso peor rendimiento).
Encontrar un término medio
Problema: Cómo liberar espacio en una unidad interna moviendo los archivos del desarrollador a una unidad externa.
He intentado casi todo lo que se me ocurre con respecto a la parte móvil de Xcode, pero me he encontrado con nuevos obstáculos y obstáculos sin importar qué.
ASI QUE. Tuve que tirar la toalla en este, encontrando un compromiso. Puedo vivir con haber ahorrado aproximadamente 50 GB de espacio en la unidad NVMe interna de 256 GB de mi MacBook Pro.
No tuve problemas para moverme:
~/Library/Android/*
(El directorio completo del SDK de Android)
~/.android/*
(Cachés y archivos de imagen del emulador .avd)
Utilizando únicamente enlaces simbólicos, después de copiar los contenidos y borrar los originales. Esto solo es interesante para aquellos que desarrollan usando el SDK y las herramientas de Android, por lo que lamentablemente no pude resolver esta locura causada por la nueva política restrictiva de Apple con respecto a los archivos ejecutables en ubicaciones “extranjeras, hostiles”.
Estos dos directorios por sí solos me ahorraron una buena parte de espacio, así que supongo que por el momento eso es todo.
Intenté sacar algunas partes del paquete Xcode del paquete de la aplicación con diferentes grados de éxito, pero como puede ver en esta captura de pantalla:
La mayor parte de Xcode.app está dentro del directorio “Platforms”, y cuando empiezo a jugar con esos archivos, las herramientas de compilación me explotan, pero a veces no, así que realmente no lo sé.
Es posible mover los archivos del simulador, y esto le ahorrará entre unos pocos gigabytes y muchos GB, dependiendo de cuántas versiones de plataformas (iOS / iPadOS, etc.) utilice.
Estos se encuentran en el interior:
~/Library/Developer/CoreSimulator
Pude mover todo este directorio de CoreSimulator sin demasiados problemas al usar enlaces simbólicos como se explica en la respuesta original.
Continuaré tratando de resolver esto, pero ahora mismo, aquí es donde está.
Acabo de instalar Xcode 12.3 en / Applications, luego copié el .app en mi disco externo y luego borré el original. Después:
ln -s /Volumes/ExternalSSD/Applications/Xcode.app /Applications/Xcode.app
Tomó un tiempo lanzarse por primera vez, pero luego ahora está bien. MacOS 11.1, M1 2020 Air.
(No es necesario clonar el sistema operativo o arrancar desde su disco externo, como sugieren las otras publicaciones).
Como alternativa a simplemente mover XCode a una unidad externa, también puede clonar su disco mac y mover todo el sistema operativo a su unidad externa y hacerlo de arranque.
Cosas que necesitas:
- Un SSD externo grande y rápido, como el disco Samsung X5 Thunderbolt 3.
- Un clonador de disco Mac (por ejemplo, Carbon Copy Cloner beta para Big Sur, o ¡SuperDuper!)
Instale el software de clonación, siga las instrucciones y tendrá una unidad externa de arranque en menos de una hora (dependiendo de lo que esté clonando)
Ahora tiene un disco de desarrollo portátil que se puede conectar y arrancar desde cualquier Mac moderno (advertencia, en realidad no probé esto)
En el primer arranque y uso de XCode, el sistema operativo de Apple realizará alguna verificación de las aplicaciones, pero una vez hecho esto, debería estar bien.
Tengo una mac-mini 2018 con Big Sur con solo 128 GB de SSD interno. Cada vez que necesitaba actualizar XCode tenía que eliminar todos los simuladores. Actualizar a Big Sur fue aún más difícil: – /
¿Rendimiento?
El disco externo (Samsung T5) es 3 veces más rápido de escribir que el SSD interno económico que Apple usa en el mac-mini. Las velocidades de lectura son aproximadamente las mismas según BlackMagic. En general, las compilaciones de la aplicación Flutter en el disco externo son aproximadamente un 10% más rápidas.