Saltar al contenido principal

Medir el tamaño de tu aplicación

Cómo medir el tamaño de la aplicación para iOS y Android.

Muchos desarrolladores se preocupan por el tamaño de su aplicación compilada. Dado que la versión APK, app bundle o IPA de una aplicación Flutter es autónoma y contiene todo el código y los activos necesarios para ejecutar la aplicación, su tamaño puede ser una preocupación. Cuanto más grande es una aplicación, más espacio requiere en un dispositivo, más tiempo tarda en descargarse, y podría superar el límite de funciones útiles como las aplicaciones instantáneas de Android.

Las compilaciones de depuración (debug) no son representativas

#

De forma predeterminada, iniciar tu aplicación con flutter run, o al hacer clic en el botón Play en tu IDE, genera una compilación de depuración (debug) de la aplicación Flutter. El tamaño de la aplicación de una compilación de depuración es grande debido a la sobrecarga de depuración que permite Hot Reload y la depuración a nivel de fuente. Como tal, no es representativa de una aplicación de producción que descargan los usuarios finales.

Comprobar el tamaño total

#

Una compilación de lanzamiento (release) predeterminada, como una creada por flutter build apk o flutter build ios, se compila para empaquetar convenientemente tu paquete de carga para Play Store y App Store. Como tal, tampoco son representativas de la descarga del usuario final. Las tiendas generalmente vuelven a procesar y dividen tu paquete de carga para dirigirse al descargador específico y al hardware del descargador, como filtrar activos orientados al DPI del teléfono, filtrar bibliotecas nativas dirigidas a la arquitectura de CPU del teléfono.

Estimar el tamaño total

#

Para obtener el tamaño aproximado más cercano en cada plataforma, utiliza las siguientes instrucciones.

Android

#

Sigue las instrucciones de Google Play Console para verificar los tamaños de descarga e instalación de la aplicación.

Producir un paquete de carga para tu aplicación:

flutter build appbundle

Inicia sesión en tu Google Play Console. Sube el binario de tu aplicación arrastrando y soltando el archivo .aab.

Visualiza el tamaño de descarga e instalación de la aplicación en la pestaña Android vitals -> App size.

Pestaña de tamaño de la aplicación en Google Play Console

El tamaño de descarga se calcula en función de un dispositivo XXXHDPI (~640 dpi) en una arquitectura arm64-v8a. Los tamaños de descarga de tus usuarios finales pueden variar según su hardware.

La pestaña superior tiene un selector para el tamaño de descarga y el tamaño de instalación. La página también contiene consejos de optimización más abajo.

iOS

#

Crea un Xcode App Size Report.

Primero, configurando la versión de la aplicación y la compilación como se describe en las instrucciones de creación de archivo de compilación de iOS.

Luego:

  1. Ejecuta flutter build ipa --export-method development.
  2. Ejecuta open build/ios/archive/*.xcarchive para abrir el archivo en Xcode.
  3. Haz clic en Distribute App.
  4. Selecciona un método de distribución. Development es el más sencillo si no tienes la intención de distribuir la aplicación.
  5. En App Thinning, selecciona 'all compatible device variants'.
  6. Selecciona Strip Swift symbols.

Firma y exporta el IPA. El directorio exportado contiene el archivo App Thinning Size Report.txt con detalles sobre el tamaño proyectado de tu aplicación en diferentes dispositivos y versiones de iOS.

El Reporte de Tamaño de la Aplicación para la aplicación de demostración predeterminada en Flutter 1.17 muestra:

Variant: Runner-7433FC8E-1DF4-4299-A7E8-E00768671BEB.ipa
Supported variant descriptors: [device: iPhone12,1, os-version: 13.0] and [device: iPhone11,8, os-version: 13.0]
App + On Demand Resources size: 5.4 MB compressed, 13.7 MB uncompressed
App size: 5.4 MB compressed, 13.7 MB uncompressed
On Demand Resources size: Zero KB compressed, Zero KB uncompressed

En este ejemplo, la aplicación tiene un tamaño aproximado de descarga de 5.4 MB y un tamaño aproximado de instalación de 13.7 MB en un iPhone12,1 (ID de modelo / Número de hardware para iPhone 11) e iPhone11,8 (iPhone XR) con iOS 13.0.

Para medir una aplicación de iOS exactamente, debes subir un IPA de lanzamiento (release) a App Store Connect de Apple (instrucciones) y obtener el reporte de tamaño desde allí. Los archivos IPA son comúnmente más grandes que los APK, como se explica en ¿Qué tan grande es el motor de Flutter?, una sección en las Preguntas frecuentes de Flutter.

Desglosar el tamaño

#

A partir de la versión 1.22 de Flutter y la versión 0.9.1 de DevTools, se incluye una herramienta de análisis de tamaño para ayudar a los desarrolladores a comprender el desglose de la compilación de lanzamiento de su aplicación.

La herramienta de análisis de tamaño se invoca pasando la bandera --analyze-size al compilar:

  • flutter build apk --analyze-size
  • flutter build appbundle --analyze-size
  • flutter build ios --analyze-size
  • flutter build linux --analyze-size
  • flutter build macos --analyze-size
  • flutter build windows --analyze-size

Esta compilación es diferente de una compilación de lanzamiento (release) estándar de dos maneras.

  1. La herramienta compila Dart de una manera que registra el uso del tamaño de código de los paquetes Dart.
  2. La herramienta muestra un resumen de alto nivel del desglose de tamaño en la terminal y genera un archivo *-code-size-analysis_*.json para un análisis más detallado en DevTools.

Además de analizar una sola compilación, también se pueden comparar dos compilaciones cargando dos archivos *-code-size-analysis_*.json en DevTools. Consulta la documentación de DevTools para más detalles.

Resumen de tamaño de una aplicación Android en la terminal

A través del resumen, puedes obtener una idea rápida del uso del tamaño por categoría (como activos (assets), código nativo, bibliotecas de Flutter, etc.). La biblioteca nativa compilada de Dart se desglosa aún más por paquete para un análisis rápido.

Análisis más profundo en DevTools

#

El archivo *-code-size-analysis_*.json producido anteriormente se puede analizar con más detalle en DevTools, donde una vista de árbol o de mapa de árbol (treemap) puede desglosar el contenido de la aplicación hasta el nivel de archivo individual y hasta el nivel de función para el artefacto AOT de Dart.

Esto se puede hacer mediante dart devtools, seleccionando Open app size tool y subiendo el archivo JSON.

Desglose de ejemplo de la aplicación en DevTools

Para obtener más información sobre el uso de la herramienta de tamaño de aplicación de DevTools, consulta la documentación de DevTools.

Reducir el tamaño de la aplicación

#

Al compilar una versión de lanzamiento (release) de tu aplicación, considera usar la etiqueta --split-debug-info. Esta etiqueta puede reducir drásticamente el tamaño del código. Para ver un ejemplo de uso de esta etiqueta, consulta Ofuscación del código Dart.

Algunas otras cosas que puedes hacer para que tu aplicación sea más pequeña son:

  • Eliminar recursos no utilizados
  • Minimizar los recursos importados de las bibliotecas
  • Comprimir archivos PNG y JPEG

Otra forma de reducir el tamaño de la aplicación es utilizar código específico de la plataforma. El compilador de Dart elimina el código que no es accesible en la plataforma de destino. Por ejemplo, si tienes código que es específico de Windows, puedes envolverlo en una verificación utilizando la clase Platform de dart:io, como if (Platform.isWindows). Cuando compilas la aplicación para Android, el compilador ve que esta verificación es siempre falsa y elimina el código específico de Windows de la compilación de lanzamiento.