Slicing: qué es, principio de funcionamiento y relación con App Thinning

Autor: IT Sectr Publicado: 2026-04-17 Tiempo de lectura: 11 min

Slicing es un mecanismo de App Thinning mediante el cual App Store crea automáticamente múltiples variantes del archivo binario, cada una conteniendo solo los recursos para un modelo de dispositivo específico. Según la Apple Developer Documentation, 2026, Slicing excluye de la distribución los recursos para configuraciones no soportadas, reduciendo el tamaño de instalación. Analicemos el principio de funcionamiento, las variantes de segmentación y la verificación de resultados.

Conclusiones clave

  • Slicing — divide el binario de la aplicación en variantes para diferentes arquitecturas, resoluciones y versiones de iOS
  • App Store entrega al usuario solo los recursos que coinciden con su dispositivo
  • Asset Catalogs — la herramienta principal del desarrollador para gestionar los recursos que participan en Slicing
  • Familias de GPU (Apple GPU, PowerVR, Mali) también se consideran al segmentar los shaders de Metal
  • Verificación de los segmentos se realiza mediante Xcode Organizer y App Store Connect Build Metrics

Qué es Slicing

Slicing es un componente de App Thinning responsable de crear variantes (segmentos) del archivo binario de la aplicación en el lado de App Store. Cuando el desarrollador sube un binario universal (fat binary) que contiene código y recursos para todas las configuraciones soportadas, App Store lo analiza y genera múltiples segmentos: uno para iPhone con procesador A17, otro para iPad con M4, otro para Apple Watch. Cada segmento contiene solo aquellos fragmentos de código y recursos necesarios para esa combinación particular de arquitectura y resolución.

Antes de iOS 9, los desarrolladores creaban manualmente archivos binarios separados para diferentes dispositivos o distribuían un fat binary universal que contenía todo a la vez. Slicing automatizó completamente este proceso: el desarrollador prepara un proyecto en Xcode, sube un archivo a App Store Connect, y Slicing en el lado del servidor crea la cantidad óptima de variantes. El usuario nunca ve el proceso de segmentación — recibe un .app listo, optimizado para su dispositivo.

Slicing se aplica no solo al código y las imágenes, sino también a los shaders de Metal. La GPU de Apple utiliza su propio conjunto de instrucciones (Metal Shading Language), que difiere de las instrucciones de PowerVR o ARM Mali. Slicing incluye en el segmento solo los shaders para la familia de GPU del dispositivo objetivo. Esto es especialmente importante para juegos con shaders personalizados — por ejemplo, los efectos de posprocesamiento de alta calidad se compilan solo para dispositivos con GPU potente (iPad Pro M4, iPhone 16 Pro Max).

Diferencia entre Slicing y la compilación simple por arquitectura

El compilador de Xcode crea un fat binary con múltiples arquitecturas (armv7, arm64, arm64e), pero no elimina recursos — todas las imágenes para todas las resoluciones permanecen dentro del .app. Slicing va más allá: analiza Asset Catalogs, shaders de Metal y bibliotecas Swift, eliminando de cada segmento lo que no es necesario para el objetivo específico. Por ejemplo, los gráficos @3x no llegan al segmento para iPhone SE, y los controladores específicos de iPhone (si se extraen en recursos separados) no llegan al segmento para iPad Air.

Cómo funciona Slicing

El proceso de Slicing comienza después de subir el build a App Store Connect y consta de tres etapas: análisis, segmentación y empaquetado. En la etapa de análisis, el servidor de App Store analiza el archivo binario, extrae información sobre las arquitecturas, dispositivos, resoluciones de pantalla y versiones de iOS soportadas. App Store utiliza un mapeo de todos los modelos comerciales de Apple a sus características técnicas — la Base de Datos de Dispositivos se actualiza con cada versión de iOS.

En la etapa de segmentación, el servidor crea copias separadas del archivo binario para cada combinación única. Para ello, App Store extrae imágenes de Asset Catalogs con etiquetas específicas (idiom, subtype, scale), selecciona solo aquellas que coinciden con el dispositivo objetivo y ensambla un nuevo paquete de recursos. La biblioteca estándar de Swift también se somete a segmentación — se eliminan de ella símbolos y métodos no utilizados (dead code stripping).

En la etapa de empaquetado, cada segmento se coloca en un paquete de distribución separado y se vincula con metadatos — una lista de modelos de dispositivo para los que está destinado este segmento. Cuando el usuario descarga la aplicación, App Store selecciona el segmento adecuado según el modelo del dispositivo, la versión de iOS y el tipo de conexión. Si no hay una coincidencia exacta, el servidor utiliza el segmento más cercano en características. Apple almacena todas las variantes en la red CDN de CloudKit para una entrega rápida en todo el mundo.

Slicing en el contexto de App Thinning

Slicing es uno de los tres mecanismos de App Thinning, pero es el que más contribuye a reducir el tamaño de descarga. Bitcode se encarga de la optimización del código máquina, On-Demand Resources de la gestión de recursos en el dispositivo, y Slicing de eliminar recursos redundantes en la etapa de distribución. Sin Slicing, los dos primeros mecanismos siguen funcionando, pero los usuarios reciben recursos para todos los dispositivos, lo que aumenta el tamaño entre un 20 y un 40% dependiendo de la cantidad de Asset Catalogs.

La diferencia entre Slicing y Bitcode radica en el punto de aplicación: Slicing trabaja a nivel de recursos (imágenes, shaders, archivos NIB), Bitcode a nivel de código máquina. Slicing divide el código por arquitecturas (arm64 vs arm64e), Bitcode permite a Apple recompilar el código para nuevas arquitecturas. Bitcode + Slicing juntos proporcionan la máxima optimización: Bitcode genera código para una arquitectura específica, y Slicing elimina los recursos innecesarios para esa arquitectura.

La relación con On-Demand Resources — Slicing y ODR no se superponen. Slicing determina qué recursos llegarán a la distribución en el dispositivo, mientras que ODR gestiona cuándo se cargan y descargan estos recursos. El desarrollador puede marcar un recurso con una etiqueta ODR, y Slicing lo incluirá en el segmento si coincide con el dispositivo. Apple recomienda usar los tres mecanismos simultáneamente para lograr el tamaño de instalación mínimo.

MecanismoObjeto de optimizaciónCuándo se aplicaEfecto en el tamaño
SlicingRecursos (imágenes, shaders)En el lado de App StoreElimina ~30% de recursos redundantes
BitcodeCódigo máquinaAl descargar el usuarioOptimiza el código para la arquitectura
ODRRecursos en el dispositivoDespués de la instalaciónReduce el tamaño inicial en 40–60%

Variantes de Slicing para diferentes dispositivos

Slicing crea segmentos separados según varias dimensiones: arquitectura del procesador, tamaño de pantalla (resolución), versión de iOS y familia de GPU (para Metal). La arquitectura determina el conjunto de instrucciones de la CPU: arm64 — conjunto básico de 64 bits (iPhone 5s — iPhone X), arm64e — conjunto extendido con soporte de Pointer Authentication y PAC (iPhone XS y posteriores, iPad Pro con A12X+). El segmento para arm64e incluye código con instrucciones de protección de memoria no disponibles en dispositivos arm64.

Resolución de pantalla — la segunda dimensión clave de Slicing. Apple utiliza escalas @1x (iPhone 3GS), @2x (iPhone 4 — iPhone SE 3), @3x (iPhone 6 Plus y posteriores) y específicas para iPad (2x y 3x con métricas adicionales). Slicing incluye en el segmento solo las imágenes con la escala que coincide con el dispositivo objetivo. Con una organización adecuada de Asset Catalogs en Xcode, esto elimina la necesidad de gestionar manualmente los conjuntos de recursos — basta con añadir una imagen al catálogo, indicando los tipos de dispositivo soportados.

Familia de GPU — la tercera dimensión, de importancia crítica para las aplicaciones Metal. Apple clasifica las GPU por generaciones: Apple GPU family 1 (A7), family 2 (A8), ... family 8 (M4). Los shaders de Metal se compilan para cada familia por separado, ya que el conjunto de instrucciones de Metal Shading Language se expande con cada generación de GPU. Slicing incluye en el segmento solo los shaders para la familia de GPU del dispositivo objetivo, lo que reduce significativamente el tamaño de juegos y aplicaciones que utilizan Metal para renderizado.

Impacto de la arquitectura en el tamaño del segmento

La arquitectura de la CPU afecta directamente al tamaño del segmento: el código arm64e contiene instrucciones adicionales de Pointer Authentication (PAC) y Signed Return Address, que aumentan el archivo binario entre un 5 y un 10% en comparación con arm64. Sin embargo, este aumento se compensa por el hecho de que Slicing incluye código arm64e solo en los segmentos para dispositivos con procesadores A12+. Para el iPhone SE (tercera generación) con A15 Bionic, Slicing crea un segmento separado optimizado para las capacidades de este chip.

Configuración de Slicing en Xcode

La configuración de Slicing en Xcode es mínima — la configuración principal se realiza a través de Asset Catalogs y Build Settings. Asset Catalog debe contener recursos organizados por tipo de dispositivo (Any, iPhone, iPad, Apple Watch, Apple TV) con la escala y el modo de visualización correctamente indicados. Xcode incluye automáticamente en la compilación solo aquellos recursos que coinciden con los dispositivos objetivo especificados en la configuración de Deployment Target.

La configuración clave de Slicing en Xcode es el Build Setting App Thinning. Valores disponibles:

  • None — Slicing desactivado, la aplicación se distribuye como fat binary universal
  • Automatic — Xcode activa Slicing con la configuración predeterminada
  • Manual — el desarrollador selecciona combinaciones específicas para Slicing
Usa Automatic para publicar en App Store. El modo Manual es útil para probar segmentos específicos en un dispositivo local.

Targeted Device Families en General → Deployment Info determina para qué tipos de dispositivo se compila la aplicación (iPhone / iPad / Universal). Slicing se basa en este parámetro al segmentar — si la aplicación solo soporta iPhone, no se crea un segmento para iPad. Deployment Target (versión mínima de iOS) también afecta a Slicing: las versiones antiguas de iOS pueden requerir segmentos armv7, que no son necesarios para iOS 13+. Apple recomienda establecer Deployment Target en la última versión estable de iOS — esto reduce la cantidad de segmentos y el tamaño del binario.

Parámetros de Asset Catalog para Slicing

Para máxima eficiencia de Slicing, Asset Catalogs deben usar etiquetas específicas para cada recurso. Xcode proporciona en Attributes Inspector para imágenes: Width Class (Any, Compact, Regular), Height Class (Any, Compact, Regular), Gamut (sRGB, Display P3), Memory (Any, Low, High), Graphics (Any, Low, High). Combinando estas etiquetas, el desarrollador controla en qué segmentos aparece cada imagen. Por ejemplo, una imagen para iPad con las etiquetas Regular Width + Regular Height solo aparecerá en segmentos para iPad en orientación horizontal.

bash
# Exportar segmento para un dispositivo específico
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "sliced/" \
  -exportOptionsPlist "export.plist" \
  -thinning "iPhone17,2" # iPhone 16 Pro Max

Xcodebuild con el parámetro -thinning y el identificador de modelo crea un segmento solo para ese modelo. La lista de identificadores se encuentra en la Base de Datos de Dispositivos de Apple (formato: iPhone17,2 — iPhone 16 Pro Max, iPad14,1 — iPad Pro 11 M4). Este método es útil para verificar el tamaño del segmento antes de enviarlo a App Store Connect. CI/CD puede usar este comando para verificación automática — si el tamaño del segmento supera el límite (por ejemplo, 100 MB para descarga móvil), el pipeline emite una advertencia.

Verificación de los resultados de Slicing

Después de subir el archivo a App Store Connect, Apple proporciona estadísticas detalladas sobre los tamaños de los segmentos. App Store Connect → Activity → seleccionar build → App Thinning — muestra Estimated App Store Size para cada categoría de dispositivo: iPhone, iPad, Apple Watch, tvOS. Los tamaños se desglosan por versiones de iOS y tipos de procesador. Si algún segmento supera el tamaño esperado, App Store Connect lo marca con una advertencia amarilla.

Verificación local mediante Xcode Organizer: después de archivar, abra Window → Organizer, seleccione el archivo y haga clic en App Thinning Profiles. Xcode mostrará los tamaños para cada segmento posible según la configuración actual del proyecto. También está disponible la opción Export para crear un IPA con un perfil de Slicing específico. Xcode genera un archivo .app-thinning.plist con información sobre qué recursos se incluyen en cada segmento.

Para automatizar la verificación de Slicing en CI/CD, use xcodebuild con -thinning y analice el tamaño de los archivos .app creados. Apple proporciona la utilidad de línea de comandos app-size (instalada mediante Xcode Command Line Tools), que genera un informe detallado: tamaño del código, tamaño de los recursos por categorías (imágenes, shaders, NIB), tamaño de las bibliotecas Swift. La comparación de los tamaños de los segmentos antes y después de la optimización de Asset Catalogs ayuda a identificar los recursos que no participan en Slicing debido a una configuración incorrecta.

bash
# Analizar el tamaño del segmento
app-size -m "sliced/App.app" \
  --format json

App-size genera un informe JSON desglosado por categorías de recursos. Si Slicing está configurado correctamente, en la sección "images" solo aparecerá un conjunto de escala (@2x o @3x), no todas las variantes. Un error de configuración de Asset Catalog se manifiesta cuando todas las escalas (@1x, @2x, @3x) están presentes en el segmento — esto significa que Xcode no pudo determinar el dispositivo objetivo para estas imágenes y Slicing no funcionó.

Preguntas frecuentes

¿Afecta Slicing a las aplicaciones distribuidas mediante TestFlight?

Sí, TestFlight también admite Slicing. Cuando un probador descarga la aplicación mediante TestFlight, el servidor de Apple entrega un segmento optimizado para el dispositivo del probador. App Store Connect maneja automáticamente Slicing para todas las distribuciones, incluido TestFlight, excepto para compilaciones Enterprise y Ad Hoc.

¿Se puede desactivar Slicing para un recurso específico?

Sí, en Asset Catalogs se pueden desmarcar las casillas de ciertos tipos de dispositivo para cada imagen. Xcode permite especificar en Attributes Inspector para qué Idiom (iPhone, iPad, Apple Watch, Mac) y escalas debe incluirse el recurso. Si un recurso es necesario para todos los dispositivos, use Universal con cualquier escala.

¿Cómo funciona Slicing con frameworks personalizados?

Los frameworks personalizados (.framework) también participan en Slicing si se compilan como XCFramework (con múltiples arquitecturas). App Store incluye en el segmento solo la arquitectura del framework que coincide con el dispositivo objetivo. Las bibliotecas estáticas (.a) no se someten a Slicing — se integran completamente en el archivo binario.

¿Por qué el tamaño del build de App Store difiere del tamaño en Xcode Organizer?

Xcode Organizer muestra el estimated size — un tamaño proyectado sin considerar la segmentación real en los servidores de Apple. App Store Connect muestra el tamaño real después de Slicing, que puede ser entre un 10 y un 15% menor que el estimado, ya que el servidor aplica optimizaciones adicionales (algoritmos LZFSE, compresión Zstandard de recursos) no disponibles localmente.

¿Soporta Slicing los recursos de SwiftUI?

Sí, Slicing es completamente compatible con SwiftUI. Asset Catalogs son utilizados por SwiftUI a través de los tipos Image, Color y SymbolImage. Slicing se aplica a imágenes vectoriales y rasterizadas, símbolos SF Symbols y shaders de Metal, independientemente de si se usa SwiftUI o UIKit para construir la interfaz.

Resumen

  • Slicing — mecanismo de segmentación del archivo binario en el lado de App Store, que elimina recursos innecesarios para un dispositivo específico
  • Tres dimensiones de segmentación: arquitectura de CPU (arm64/arm64e), resolución de pantalla (@2x/@3x) y familia de GPU (Metal)
  • Asset Catalogs — la herramienta principal para gestionar los recursos que participan en Slicing
  • App Store entrega solo aquellos recursos que coinciden con el modelo del dispositivo, la versión de iOS y el tipo de conexión
  • Xcode Organizer y App Store Connect muestran los tamaños de los segmentos para todas las configuraciones soportadas
  • App-size utilidad de Xcode CL Tools permite verificar la eficiencia de Slicing en CI/CD
  • TestFlight también admite Slicing, a diferencia de la distribución Enterprise y Ad Hoc

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también