Servicios Cómo trabajo Soluciones Blog Herramientas Contacto Hablemos de tu proyecto

Cómo solucionar el problema de compatibilidad de 16 KB en Flutter

Logo yanquirm.dev
Publicado el
Cómo solucionar el problema de compatibilidad de 16 KB en Flutter

Google Play va mejorando constantemente y ofreciendo una experiencia superior tanto para desarrolladores como para los usuarios finales. Uno de los cambios más importantes que los desarrolladores de Flutter deben conocer es el nuevo requisito de compatibilidad de 16 KB de tamaño de página de memoria (Page Size).

A partir del 1 de noviembre de 2025, todas las nuevas aplicaciones y actualizaciones de aplicaciones en Google Play diseñadas para ser compatibles con Android 15 (nivel de API 35) o posterior deberán ser compatibles con el tamaño de página de memoria de 16 KB en dispositivos de 64 bits.

Aquí tienes una guía completa para garantizar que tu aplicación Flutter cumpla con las normas que Google solicita.

¿Qué está cambiando y por qué?

Anteriormente, Android utilizaba principalmente páginas de memoria de 4 KB. Pero ahora que los dispositivos modernos tienen más memoria RAM y Google fomenta un rendimiento más rápido, cambiar a páginas de 16 KB ofrece muchas ventajas.

El punto principal es que, en caso de que su aplicación o alguna de sus dependencias, en particular, las que usan código nativo C/C++, de tamaño de la página está codificado en 4 KB, puede bloquearse o funcionar mal en dispositivos Android 15+ que usan páginas de 16 KB.

Aquí te dejo un artículo donde te explico qué significa, a quién afecta y cómo actualizar tu proyecto fácil, es una guia basica: Requisito de Google Play: compatibilidad con páginas de 16 KB en Android 15 — qué es y cómo adaptar tu app

¿Tu aplicación Flutter está afectada?

Las aplicaciones Flutter suelen utilizar código nativo mediante el uso de múltiples complementos y el propio motor Flutter. Por lo tanto, es muy probable que tu aplicación se vea afectada, especialmente si:

  • Utilizas bibliotecas nativas mediante el uso de complementos, por ejemplo, anuncios, análisis, cámara, etc.
  • Escribes código nativo personalizado en C/C++.
  • Tu proyecto de Flutter, sus dependencias o el complemento Android Gradle (AGP) y NDK están en versiones anteriores.

¿Cómo comprobar la compatibilidad de tu aplicación?

Google Play Console te permite verificar la compatibilidad de la compilación de tu aplicación directamente en el Explorador de Paquetes de Aplicaciones.

Desde tu Play Console, dirígete a Probar y publicar → Últimas versiones y app bundles. Aquí verás la lista de versiones que has subido, seleccionas la versión más reciente, en Detalles verás lo siguiente:

Google Console: No compatible con 16 kB
Google Console: No compatible con 16 kB

Actualización paso a paso:

Relación entre Plugin Gradle para Android (AGP) y Gradle de Flutter

Tiene que existir en nuestro proyecto una relación entre esto para que se pueda compilar correctamente, por lo que si actualizamos AGP, debemos actualizar también el Gradle a la versión mínima requerida.

Te dejo aquí la tabla de relación.

Tabla de relación entre AGP y Gradle
Tabla de relación entre AGP y Gradle

Aqui puedes consultar la tabla de relación: Notas de la versión del complemento de Android para Gradle

Plugin Gradle para Android (AGP)

Para alinear a 16 KB se requiere actualizar la versión de AGP a 8.5.1 o superior. Esto es esencial, ya que las versiones más recientes de AGP suelen ser compatibles con los requisitos más recientes de la plataforma Android.

Dentro de nuestro proyecto de Flutter abrimos el fichero settings.gradle

android/settings.gradle
android/settings.gradle

Te explico lo que estamos viendo en este fichero y nos centramos en la parte seleccionada:

  • id "com.android.application" → Este es el plugin de aplicación Android.
  • version "8.7.1" → Esta es la versión del AGP.
  • apply false → Esto evita que se aplique de inmediato (se aplica más adelante en subproyectos como :app)

¿Y qué versión de Gradle necesitas para AGP 8.7.1?

Según la tabla oficial de compatibilidad, AGP 8.7.1 requiere Gradle 8.9 o superior.

Gradle de Flutter

Ahora vamos a comprobar la versión del Gradle en el fichero gradle-wrapper.properties

android/gradle/wrapper/gradle-wrapper.properties
android/gradle/wrapper/gradle-wrapper.properties

Comprobamos la propiedad distributionUrl y nos aseguramos que la relación es correcta.

Versión NDK

Además, para poder tener una alineación de 16 KB, es necesario que la versión de NDK sea de R28 o superior.

Para comprobar qué versión tenemos instalada en nuestra máquina, abrimos una terminal y ejecutamos el siguiente comando:


ls ~/Library/Android/sdk/ndk
    
ls ~/Library/Android/sdk/ndk
ls ~/Library/Android/sdk/ndk

Como podemos ver, tengo instalada la versión 25.1.8937393 es NDK R25, por lo tanto no cumple con ese requisito.

Vamos a instalar NDK R28 o superior, para ello vamos a hacerlo desde Android Studio.

Abre Android Studio, ve a Preferences (macOS) o Settings (Windows/Linux). Luego a Languages & Frameworks > Android SDK > Pestaña SDK Tools y marcamos la opción NDK (Side by side).

NDK (Side by side)
NDK (Side by side)

Aunque esté marcada, la desmarcamos y volvemos a marcar.

Aplica y espera que se descargue.

Instalación de NDK (Side by side)
Instalación de NDK (Side by side)

Comprobamos que esté instalada en nuestra máquina la última versión. Abrimos una terminal y ejecutamos el siguiente comando:


ls ~/Library/Android/sdk/ndk
    
ls ~/Library/Android/sdk/ndk
ls ~/Library/Android/sdk/ndk

Como vemos, tenemos la última versión de NDK 29.0.14033849

Ahora abrimos nuestro fichero build.gradle

android/app/build.gradle
android/app/build.gradle

Aqui buscamos la variable ndkVersion y establecemos el valor "29.0.14033849"

En este mismo fichero, dentro de la clase android, buscamos la clase defaultConfig y agregamos el siguiente código:


externalNativeBuild{
    cmake{
        arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
    }
}
    
android/app/build.gradle
android/app/build.gradle

¡Guardamos los cambios!

Dependencias

La mayoría de los SDK para Flutter ya ofrecen versiones compatibles de 16 KB. Por ello es importante actualizar a la última versión.

Incluso si no tienes código nativo personalizado, las bibliotecas nativas incluidas en Flutter y tus complementos deben reconstruirse con una alineación de 16 KB.

Actualizar tu AGP, NDK y SDK de Flutter suele gestionar esto automáticamente durante el proceso de compilación.

Limpiar el proyecto: Esto elimina archivos temporales y cachés.


flutter clean
    

Actualizar dependencias a la última versión compatible: Esto instala las versiones más recientes permitidas según las restricciones en tu pubspec.yaml


flutter pub upgrade
    

Si quieres además actualizar el lockfile (pubspec.lock):


flutter pub upgrade --major-versions
    

Esto actualiza a la última versión posible de cada paquete (incluso mayores, si tu archivo pubspec.yaml lo permite).

Compilamos en aab (Android App Bundle) en modo release


flutter build appbundle --release
    

Esto genera el archivo .aab en: build/app/outputs/bundle/release/app-release.aab

Pruebas en dispositivos/emuladores compatibles con 16 KB:

Este es un paso crucial. No concluyas precipitadamente que tus cambios han solucionado el problema sin realizar pruebas.

Android Studio te permitirá crear un emulador con una imagen del sistema Android 15 y activar la compatibilidad con páginas de 16 KB en la configuración avanzada del emulador.

Dispositivos físicos: En caso de que tengas dispositivos Pixel con Android 15 instalado, puedes habilitar Opciones de desarrollador > "Usar páginas de memoria de 16 KB" y ejecutar tu aplicación en él.

Emulador compatibilidad con Page Size 16 KB
Emulador compatibilidad con Page Size 16 KB

Pruebas desde la consola

Podemos hacer una última comprobación descargando un paquete BundleTool (la herramienta oficial de Google para inspeccionar AABs).

Descárgalo (JAR) desde: https://github.com/google/bundletool/releases

Guarda el .jar y colócalo en una ruta conocida. Recuerda que tienes tu .aab en: build/app/outputs/bundle/release/app-release.aab

Ejecuta en terminal:


java -jar ~/Desktop/bundletool-all-1.18.1.jar validate --bundle=build/app/outputs/bundle/release/app-release.aab 
    
BundleTool
BundleTool

Cambia bundletool-all-1.18.1.jar por la versión que descargaste. Si hay problemas con el Page Size, verás un error relacionado con el page alignment.

Subida y comprobación final con Google Play Console

Ahora ya puedes subir tu aplicación al market de Google. Una vez subida, puedes ver en los detalles de la versión si realmente es compatible con 16 KB.

Resultado final Google Play Console 16 kB
Resultado final Google Play Console 16 kB

Si aún tienes problemas y usas la librería rive, aquí te dejo este artículo: Cómo solucionar el problema de Page Size 16 KB con la librería Rive en Flutter

Conclusión

La función de compatibilidad con Google Play de Android 15+, que requiere 16 KB, supone un avance significativo para optimizar el rendimiento de las apps de Android. Actualizando tu cadena de herramientas de Flutter, inspeccionando el código nativo y realizando pruebas exhaustivas, podrás lograr que tu app se ajuste automáticamente a este nuevo estándar. Además, para garantizar que puedas cumplir fácilmente con este requisito, las prácticas recomendadas para optimizar el tamaño de tus apps no solo te permitirán cumplirlo, sino que también optimizarán la experiencia general del usuario de tus apps de Flutter en Google Play.

¡No esperes demasiado para preparar tus apps, empieza ya!

Si tu aplicación Flutter no está actualizada para páginas de memoria de 16 KB, podría fallar, tener un rendimiento bajo o no poder enviarla a Google Play para Android 15 o superior. Actualizar tu cadena de herramientas y realizar pruebas en Android 15 es esencial para la compatibilidad.