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.
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.
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.).
Volviendo a Xcode, después de generar el Archivo, el botón Distribute App
está disponible para usted. En esta etapa, .xcarchive se convierte en .ipa .
Un archivo .ipa 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
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 .ipa , haga clic en Export
después de la distribución, convierta el tipo de .ipa a .zip y simplemente extraiga.
En resumen, el archivo .ipa es la aplicación empaquetada que los usuarios finales instalan en sus dispositivos iOS, mientras que .xcarchive es un archivo centrado en el desarrollador que contiene varios activos e información de compilación para la aplicación.
El .ipa se utiliza para la distribución, mientras que el .xcarchive 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 .
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
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 velocidad de descarga . Aquí todo es evidente: cuanto menor sea el tamaño, mayor será la tasa.
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.
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.
Primero, elija HEIC 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.
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 SVG (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.
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 Asset Catalogs . 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.
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á.
No olvides que tienes un enorme catálogo de imágenes “gratuitas”: SF Symbols . Apple trabaja constantemente en aumentar los personajes, añadiendo la posibilidad de personalizar colores e incluso animaciones.
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.
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 bibliotecas dinámicas 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.
Apple también recomienda crear una base de código modular ( SPM ) en su aplicación, que puede resultar útil al compartir código con otros objetivos, App Clipps, por ejemplo.
Swift Package Manager ofrece una forma simplificada y nativa de gestionar dependencias en sus proyectos Swift.
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 no dude en eliminarlos de su aplicación.
Sólo para resumir esto. Todavía hay algunas razones importantes por las que debemos vigilar el tamaño de nuestra aplicación:
Y existen algunos métodos para reducir el tamaño de la aplicación:
Así que no lo olvides durante el desarrollo de tu rutina; vuélvete más inteligente cada día 🙃