
Atención desarrolladores Android: Actualización de tamaños de página de memoria de 16 KB
Tiempo de lectura: 3 minutos
Introducción
Google ha hecho algunos anuncios que son muy importantes para los desarrolladores de Android. Todas las nuevas aplicaciones y las actualizaciones de las aplicaciones existentes destinadas a dispositivos Android 15+ tendrán que soportar tamaños de página de memoria de 16 KB en dispositivos de 64 bits a partir del 1 de noviembre de 2025.. Anteriormente, sólo era necesario admitir tamaños de página de memoria de 4 KB.
Este post no sólo explicará qué y por qué se produce el cambio, sino que también le guiará a través de la actualización de su aplicación Android que utiliza el Vonage Client SDK. También revisará una solución para la grabación de audio en dispositivos Android 14.
Nota: Vonage Client SDK admite tamaños de página de memoria de 16 KB a partir de v2.30.0.
Qué y por qué
Android está cambiando la forma en que gestiona la memoria a nivel de sistema, y esto podría afectar a tu aplicación. Esto es lo que debes saber:
¿Qué es el tamaño de una página? Una página es un bloque fijo de memoria que el sistema operativo de tu dispositivo asigna a las aplicaciones. Piensa en ellas como si fueran contenedores de tamaño estándar: la memoria de tu aplicación tiene que ir dentro de estos contenedores. Actualmente, Android utiliza páginas de 4 KB (como los contenedores pequeños), pero los dispositivos más nuevos utilizarán páginas de 16 KB (contenedores más grandes).
Si tu aplicación necesita 20 MB de RAM, el sistema te da actualmente 5.120 contenedores pequeños (de 4 KB cada uno). Con páginas de 16 KB, obtendrías 1.280 contenedores más grandes.
¿Por qué introduce Android este cambio? Los tamaños de página más grandes aportan varias ventajas:
Inicio de aplicaciones más rápido con menor consumo de energía
Tiempos de arranque del dispositivo más rápidos
Mejor rendimiento general del sistema
¿Afecta esto a mi aplicación? Este cambio afecta principalmente a las aplicaciones que utilizan código nativo - es decir:
Aplicaciones que utilizan el Android NDK
Aplicaciones con bibliotecas nativas (código C/C++)
Las aplicaciones que utilizan SDK de terceros que contienen componentes nativos (como el Vonage Client SDK)
Si tu aplicación es puramente Java/Kotlin sin dependencias nativas, probablemente estés bien y puedas dejar de leer aquí.
¿Qué problemas pueden surgir? Las aplicaciones con código nativo pueden experimentar:
Problemas de alineación de memoria que provocan bloqueos
Problemas de compatibilidad con bibliotecas nativas antiguas
Comportamiento inesperado durante la asignación de memoria
¿Qué hay que hacer? Google Play exigirá que las aplicaciones sean compatibles con tamaños de página de 16 KB. Para prepararse:
Sigue esta guía para actualizar tu implementación del Vonage Client SDK
Actualice las bibliotecas nativas a versiones que admitan páginas de 16 KB.
Pruebe su aplicación en dispositivos con páginas de 16 KB (o emuladores configurados para ello).
Revise su código NDK para suposiciones de tamaño de página hardcoded
Este requisito garantiza que tu aplicación funcionará sin problemas cuando lleguen al mercado los primeros dispositivos con un tamaño de página de 16 KB.
Actualización de la aplicación
Requisitos previos
Un proyecto Android con la configuración de Gradle.
Acceso al Vonage Client SDK.
Mínimo Android API 36 como SDK de compilación y destino.
1. Actualiza la versión del SDK para Android de Vonage
En primer lugar, actualiza la configuración de Gradle para utilizar el nuevo SDK y la API 36 de Android.
En su app/build.gradle archivo:
android {
...
compileSdk 36
defaultConfig {
...
targetSdk 36
...
}
}
dependencies {
...
// Vonage Client SDK
implementation("com.vonage:client-sdk-voice:2.1.0")
} 2. Aplicar la revisión de audio de Android 14
A partir del nivel 34 de la API (Android 14), Android requiere un servicio de primer plano (FGS) para grabar audio, incluso si la aplicación está en primer plano.
Para cumplir la normativa, inicie un FGS siempre que atienda una llamada saliente o entrante.
Llamadas salientes
Al realizar una llamada saliente:
client.serverCall(context) { err, callId ->
err?.let {
println("Error starting outbound call: $it")
} ?: callId?.let {
println("Start outbound Call success: $it")
requireActivity().getSharedPreferences("legid", Context.MODE_PRIVATE).edit().apply {
putString("legid", it)
apply()
}
activeCallId = it
telecomHelper.startOutgoingCall(it, "SERVER-CALL")
// Required on API 34+: Start FGS for audio recording
startForegroundService(requireContext())
}
} Llamadas entrantes
Al atender las llamadas entrantes:
client.setCallInviteListener { callId, from, type ->
activeCallId = callId
println("Call from: $from, via channel $callId, channelType: $type")
telecomHelper.startIncomingCall(callId, from, type)
// Required on API 34+: Start FGS for audio recording
startForegroundService(requireContext())
} 3. Añadir un servicio en primer plano con notificación
Android requiere que cualquier FGS que grabe audio muestre una notificación persistente informando al usuario de que la grabación está activa.
Tendrá que implementar un AudioRecorderService. Una implementación de referencia está disponible aquí: AudioRecorderService.kt (GitHub)
Resumen
Para admitir tamaños de página de memoria de 16 KB de Android con Vonage Client SDK:
Actualizar Gradle para la API 36 e incluir la última versión del SDK.
Para Android 14+:
Inicie un servicio en primer plano cuando atienda llamadas.
Asegúrese de que el servicio publique una notificación sobre la grabación de audio.
Esto garantiza el cumplimiento de las nuevas políticas de Android y evita problemas de audio durante las llamadas.
Gracias a Nathan y Salvatore del equipo del Client SDK por su experiencia técnica en la elaboración de este tutorial. ¿Ya has actualizado o creado una nueva aplicación que soporte tamaños de página de memoria de 16 KB? ¿Cómo fue tu experiencia? Háganoslo saber en nuestra Comunidad de desarrolladores en Slack.