Cada año, Apple lanza un nuevo iPhone, aumentando gradualmente el tamaño de la RAM y la memoria principal, añadiendo potencia al chip. Hoy en día, en el iPhone 15, ya puedes ejecutar juegos de consola como "Resident Evil 4". Y puede surgir una pregunta lógica: ¿debería optimizar el tamaño de mi aplicación o no puedo dedicarle más tiempo? En definitiva, todavía merece la pena optimizar el tamaño. En este artículo, recopilé las razones por las que es esencial hacerlo y proporcioné algunos métodos de optimización útiles. Problemas y definiciones Entonces, comencemos con la respuesta más banal a la pregunta "¿Por qué importa el tamaño?" - Las limitaciones de la App Store. App Store Connect simplemente no le permitirá descargar un archivo que exceda el límite de tamaño especificado. Para aplicaciones de iOS y tvOS, verifique que su aplicación no exceda los tamaños de archivo máximos en los sistemas operativos compatibles. El tamaño total sin comprimir de su aplicación debe ser inferior a 4 GB. Las aplicaciones de Apple Watch deben tener menos de 75 MB. Además, cada archivo ejecutable de Mach-O (por ejemplo, nombre_aplicación.aplicación/nombre_aplicación) no debe exceder estos tamaños máximos de archivo. Enlace Los archivos específicos a los que se refieren pueden resultar un poco confusos. Para comprender mejor esto, repasemos el proceso de envío de su solicitud a App Store Connect. .xcarchivo El primer paso es crear un archivo. Este archivo almacena una colección de artefactos de compilación e información relacionada para una aplicación iOS, macOS, watchOS o tvOS. Tenemos la oportunidad de investigar qué se incluye exactamente en el archivo y en qué forma. Entre los archivos principales encontrarás: Carpeta de productos con su aplicación; dSYMs, (abreviatura de "símbolos de depuración"), archivos especiales generados por Xcode con la información necesaria para la depuración, en definitiva, registros de fallos; Lista de información; Por cierto, el archivo de la Aplicación también se puede abrir mediante “Mostrar contenido del paquete”, y entre los archivos encontrará el ejecutable y CodeResources, resultado de la firma de código; realiza un seguimiento de las firmas digitales de varios recursos de la aplicación (imágenes, etc.). .ipa Volviendo a Xcode, después de generar el Archivo, el botón está disponible para usted. En esta etapa, se convierte en . Distribute App .xcarchive .ipa Un archivo puede considerarse como un paquete comprimido que incluye una carpeta "Carga útil". Dentro de esta carpeta "Carga útil", se encuentra el paquete esencial "YourApp.app". Dentro del paquete ".app", encontrará todos los componentes críticos de su aplicación, incluidos recursos como .ipa imágenes; archivos plist; archivos plumilla comprimidos; ; el archivo ejecutable Además, alberga recursos de firma de código para garantizar la integridad y seguridad de la aplicación. Para ver el interior de su , haga clic en después de la distribución, convierta el tipo de a y simplemente extraiga. .ipa Export .ipa .zip En resumen, el archivo es la aplicación empaquetada que los usuarios finales instalan en sus dispositivos iOS, mientras que es un archivo centrado en el desarrollador que contiene varios activos e información de compilación para la aplicación. .ipa .xcarchive El se utiliza para la distribución, mientras que el se utiliza para la depuración, el archivado y el desarrollo posterior. El ejecutable, por otro lado, es el código central que realiza las funciones de la aplicación y está contenido dentro del paquete . .ipa .xcarchive .ipa Por tanto, las limitaciones de la AppStore se pueden ilustrar de la siguiente manera. versión del sistema operativo tamaño .ipa .ipa -> Carga útil -> Aplicación -> tamaño exe iOS 9.0 y posteriorestvOS 9.0 y posteriores 4 GB 500 megas iOS 7.X a iOS 8.X 2GB 60 megas Sin embargo, para estimar el tamaño de su aplicación final, es decir, cuántos bytes tendrá que instalar un usuario en particular en su dispositivo, necesitará acciones adicionales, como generar un informe del tamaño de la aplicación. La documentación describe bien el procedimiento para crearlo, así que dejaré un aquí. enlace La siguiente razón para pensar en el tamaño de tu aplicación es… la AppStore nuevamente, pero ahora, no estamos hablando de restricciones del sistema sino de la . Aquí todo es evidente: cuanto menor sea el tamaño, mayor será la tasa. velocidad de descarga Además, existe un límite de 200 MB, para alcanzar el cual los usuarios deben conectarse a una red Wi-Fi para instalar la aplicación. El retraso puede desanimar a los usuarios y generar mayores tasas de abandono. Los algoritmos de búsqueda y descubrimiento de la App Store de Apple a menudo favorecen las aplicaciones más pequeñas, ya que son más fáciles de descargar y probar para los usuarios. Los tamaños de aplicación más pequeños pueden mejorar potencialmente la visibilidad de su aplicación en los resultados de búsqueda y las recomendaciones. Una vez que la aplicación está en el dispositivo, su tamaño sigue siendo importante. Las aplicaciones más pequeñas se inician más rápido, lo que brinda una mejor experiencia de usuario. Cuando una aplicación optimiza el almacenamiento, contribuye a prolongar la duración de la batería, reducir el espacio que ocupa la aplicación y mejorar el estado del dispositivo. Como resultado, cuanta más gente esté contenta con el iPhone, más usuarios potenciales tendrás. Soluciones Hay algunos consejos simples para evitar aumentar innecesariamente el tamaño de su aplicación durante el desarrollo. El primero de ellos es el trabajo consciente con imágenes. Imágenes Primero, elija en lugar de JPEG. HEIC proporciona archivos que son un 50 por ciento más pequeños en comparación con JPEG, manteniendo al mismo tiempo una calidad de imagen similar. Esto da como resultado una reducción del espacio de almacenamiento en su dispositivo. Los archivos más pequeños son más fáciles de transferir a través de redes, además de cargarlos y guardarlos en el disco más rápido. HEIC Los HEIC admiten la transparencia de la imagen y la capacidad de almacenar imágenes complementarias que contienen información de profundidad y disparidad. Admite la compresión sin pérdidas y le permite almacenar varias imágenes en un solo contenedor. En segundo lugar, intente adoptar (un formato de imagen vectorial basado en XML que se utiliza para mostrar gráficos vectoriales bidimensionales) en lugar de PDF y PNG. A diferencia de las imágenes rasterizadas, los gráficos vectoriales suelen presentar tamaños de archivo más pequeños, porque se caracterizan por ecuaciones matemáticas que definen formas y curvas, en lugar de almacenar píxeles individuales. SVG Inicialmente, era necesario agregar 3 imágenes con prefijos (para cada densidad de píxeles). Luego se agregó compatibilidad con PNG (= imagen vectorial con un tamaño determinado), pero aún funcionó en el nivel de "cortar 3 PNG de PDF cuando ensamblamos el proyecto". Y solo entonces fue posible usar SVG + incluir la casilla de verificación "usar fecha de vector" en el catálogo de activos, reduciendo así realmente el tamaño de las imágenes utilizadas + agregando la posibilidad de escalado infinito, sin pérdida de calidad. En tercer lugar, aproveche al máximo las capacidades de . Los catálogos de activos proporcionan un almacenamiento fácil de usar para múltiples resoluciones de la misma imagen. Además, los catálogos almacenan todos los recursos de imágenes en un único formato optimizado con metadatos en lugar de archivos individuales. Asset Catalogs Permite que la App Store proporcione solo los recursos necesarios para su dispositivo en particular. Esto conduce a un aumento de la velocidad de descarga y ya sabemos que a los usuarios no les gusta esperar. Es posible configurar el recurso “bajo demanda”, es decir, el recurso se descargará en el dispositivo solo si es necesario y, después de un tiempo de desuso, se eliminará. Enlace No olvides que tienes un enorme catálogo de imágenes “gratuitas”: . Apple trabaja constantemente en aumentar los personajes, añadiendo la posibilidad de personalizar colores e incluso animaciones. SF Symbols Entonces, con imágenes y otros recursos gráficos, todo parece estar claro: usamos los formatos correctos y agregamos un catálogo a través de Activos. Siempre existe la oportunidad de no incluir grandes recursos en el montaje final, sino simplemente cargarlos desde Internet cuando sea necesario. Ahora, hablemos del código y el uso de bibliotecas. Gestión de marcos Permítanme recordarles rápidamente acerca de la vinculación. Hay dos tipos: estático y dinámico. Estático Dinámica Cuando se produce la vinculación Tiempo de construcción Tiempo de ejecución Donde se almacenan las dependencias En el archivo ejecutable final En bibliotecas dinámicas separadas Cómo se comparten las dependencias Todas las instancias de la aplicación utilizan la misma copia. Cada instancia de la aplicación tiene su propia copia. Cómo se manejan las actualizaciones de las dependencias Reconstruir la aplicación Actualizar la biblioteca dinámica Según el tema de este artículo, el almacenamiento de dependencias es especialmente importante para nosotros y los enlaces dinámicos parecen ser nuestros favoritos. Las bibliotecas dinámicas no están vinculadas estáticamente a las aplicaciones cliente; no pasan a formar parte del archivo ejecutable. En cambio, las bibliotecas dinámicas se pueden cargar (y vincular) en una aplicación cuando se inicia o mientras se ejecuta. Enlace En pocas palabras, optar por en lugar de bibliotecas estáticas da como resultado tamaños de archivos de aplicaciones más pequeños y un menor uso de memoria inicial. Sin embargo, sigue siendo importante lograr un equilibrio y evitar el uso excesivo de bibliotecas dinámicas, ya que esto puede crear un retraso en el rendimiento durante el inicio de la aplicación. bibliotecas dinámicas Apple también recomienda crear una base de código modular ( ) en su aplicación, que puede resultar útil al compartir código con otros objetivos, App Clipps, por ejemplo. SPM Swift Package Manager ofrece una forma simplificada y nativa de gestionar dependencias en sus proyectos Swift. Archivos en exceso Una de las formas más efectivas de reducir el tamaño de su aplicación es eliminar todos los archivos innecesarios. Estos archivos adicionales pueden ser, por ejemplo, Read.me o imágenes sobrantes. De hecho, al principio del artículo, donde descubrimos qué es un .ipa, ya aprendimos cómo encontrar todos los archivos que ingresarán a la AppStore: .ipa -> .zip -> Aplicación -> mostrar paquete contenido. Descubra todos los recursos que no necesita y de su aplicación. no dude en eliminarlos Conclusión Sólo para resumir esto. Todavía hay algunas razones importantes por las que debemos vigilar el tamaño de nuestra aplicación: Límites de la App Store; Velocidades de descarga y lanzamiento; Influencia en la duración de la batería del dispositivo; Y existen algunos métodos para reducir el tamaño de la aplicación: Formatos HEIC y SVG para imágenes; Catálogos de Activos; Enlace dinámico; Filtrar archivos sobrantes; Así que no lo olvides durante el desarrollo de tu rutina; vuélvete más inteligente cada día 🙃