Flutter

Soporte 16kb tamaño de página memoria Flutter

No hay comentarios

Qué es eso de 16kb tamaño de página?

Primero de todo. Qué significa esto de 16kb tamaño de página. Hoy en día es poco común que desarrallando Apps o cualquier otro tipo de software de alto nivel tengamos que ocuparnos de estos detalles. Son detalles de bajo nivel que antaño a los programadores les preocupaba. Antes se requería de una gestión de memoria del dispositivo mucho más precisa y los programadores requerían de un conocimiento interno, casi a nivel de hardware, para poder desarrollar de forma eficiente.

Hoy, los sistema operativos y capas o frameworks ya hacen todo ese trabajo por nosotros. Así que nosotros solo debemos pensar en desarrollar las partes que impactan en la lógica de negocio.

La memoria (RAM) de tu dispositivo es limitada (aunque sea mucha, 8 GB o más). Para hacer una gestión eficiente el sistema divide esa memoria en secciones o páginas lógicas. Esta páginas se asignan a procesos y el sistema se ocupa de que solo ciertos procesos puedan acceder a esas páginas. Si la memoria del dispositivo esta ya toda ocupada, el sistema puede retirar ciertas paginas antiguas, guardarlas en una memoria más lenta (la SSD por ejemplo) y liberar memoria para seguir asignando a otros procesos que en este momento lo requieran.

Porqué tengo que soportar esto?

Muchos de los plugins que usamos en nuestro día a día. Como el de la «cámara», asumen que el tamaño de página es de 4kb. El estandard hasta ahora era usar páginas de tamaño 4kb.

Con el avance de la tecnología, más memoria, cpus de 64 bits, etc. Esos 4kb se han quedado pequeños. A partir de Android 15 se pueden usar páginas de tamaño superior, de 16kb. Esto hace que el sistema sea más eficiente, ya que no tiene que estar moviendo tantas pequeñas páginas. A partir de Android 16 será obligatorio!

En algunos artículos comentan un rendimiento de un 20% o superior. Nuestro dispositivo consumirá menos batería y se calentará menos.

Cómo hago para que mis Apps Flutter soporten los 16kb de tamaño de página?

Para empezar a usar el soporte a página de 16kb solo tienes que indicar el uso de nuevas versiones de ndk de android. Usando las versiones 28.xxx es suficiente.

En el fichero build.gradle dentro de la carpeta app.

android/app/build.gradle

Especifica la versión de ndk como se indica aquí.

android {
namespace "com.paquete.nombreapp
compileSdkVersion 36
ndkVersion "28.1.13356709"

Con esto la App tendrá soporte para el paginado y la alerta de Google Play desaparecerá.

Algunos problemas que puedes encontrar

Solución de problemas

  • Error: «Plugin requires a higher Android NDK version»: Asegúrate de que todos los plugins usen un NDK compatible. Actualiza los plugins o especifica un NDK superior en build.gradle.
  • NDK no encontrado: Si Gradle no encuentra el NDK especificado, descárgalo manualmente desde Android Studio. Tools -> SDK Manager -> SDK Tools.
  • Advertencia en Google Play: Verifica que el APK o AAB generado incluya soporte para páginas de 16 KB (puedes usar herramientas como apkanalyzer).

Flutter

Entradas relacionadas

Autochek empieza la migración a Flutter