La plataforma de Android 15 incluye cambios de comportamiento que podrían afectar a tu app.
Los siguientes cambios de comportamiento se aplican a todas las apps cuando se ejecutan en Android 15:
independientemente de targetSdkVersion
. Deberías probar tu app y, luego, modificarla
según sea necesario para admitirlos
de forma adecuada, cuando corresponda.
Asegúrate también de revisar la lista de cambios de comportamiento que solo afectan a las apps orientadas a Android 15.
Funcionalidad principal
Android 15 modifica o expande varias capacidades principales del sistema Android.
Cambios en el estado de detención del paquete
La intención del estado FLAG_STOPPED
del paquete (que los usuarios pueden interactuar en las compilaciones del AOSP manteniendo presionado el ícono de la app y seleccionando "Forzar detención") siempre ha sido mantener las apps en este estado hasta que el usuario las quite de forma explícita desde el inicio directo o la interacción indirecta con la app (a través de la hoja compartida o un widget, seleccionando la app como fondo animado, etcétera). En Android 15, actualizamos el comportamiento del sistema para que se alinee con el comportamiento deseado. Solo se deben quitar las apps del estado de detención a través de la acción directa o indirecta del usuario.
Para admitir el comportamiento deseado, además de las restricciones existentes, el sistema también cancela todos los intents pendientes cuando la app entra en el estado de detención en un dispositivo que ejecuta Android 15. Cuando las acciones del usuario quitan la app del estado de detención, la transmisión de ACTION_BOOT_COMPLETED
se entrega a la app, lo que brinda la oportunidad de volver a registrar cualquier intent pendiente.
Puedes llamar al nuevo método ApplicationStartInfo.wasForceStopped()
para confirmar si la app se puso en estado detenida.
Compatibilidad con tamaños de página de 16 KB
Hasta ahora, Android solo admitía tamaños de página de memoria de 4 KB, que tienen rendimiento optimizado de la memoria del sistema para la cantidad promedio de memoria total que Los dispositivos Android solían tener. A partir de Android 15, AOSP admite dispositivos configurados para usar un tamaño de página de 16 KB (16 KB) dispositivos). Si tu app usa bibliotecas del NDK, hazlo directamente o indirectamente a través de un SDK, tendrás que recompilar tu app para que Funciona en estos dispositivos de 16 KB.
A medida que los fabricantes siguen creando dispositivos con mayores cantidades memoria física (RAM), muchos de estos dispositivos adoptarán 16 KB (y eventualmente mayores) para optimizar el rendimiento del dispositivo. Agregando la compatibilidad con dispositivos de tamaño de página de 16 KB permite que tu app se ejecute en estos y ayuda a que tu app se aproveche del rendimiento asociado mejoras continuas. Sin la recompilación, es posible que las apps no funcionen en dispositivos de 16 KB. cuando se producen en versiones futuras de Android.
Para ayudarte a que tu aplicación sea compatible, proporcionamos orientación sobre cómo verificar si tu app se ve afectada, cómo volver a compilar tu app (si corresponde) y saber cómo probarla en un entorno de 16 KB con emuladores (incluido Android 15 imágenes del sistema para Android Emulator).
Aumento de los beneficios y del rendimiento
Los dispositivos configurados con tamaños de página de 16 KB usan un poco más de memoria en promedio, pero también obtienen varias mejoras de rendimiento tanto para el sistema como para las apps:
- Menores tiempos de inicio de la app mientras el sistema está bajo presión de memoria: un 3.16% más bajo en promedio, con mejoras más significativas (hasta un 30%) para algunas apps que probamos
- Consumo de energía reducido durante el lanzamiento de la app: reducción promedio del 4.56%
- Lanzamiento más rápido de la cámara: inicios en caliente un 4.48% más rápidos en promedio y inicios en frío un 6.60% más rápidos en promedio
- Tiempo de inicio del sistema mejorado: Mejora en un 1.5% (aproximadamente 0.8 segundos) en promedio.
Estas mejoras se basan en nuestras pruebas iniciales, y es probable que los resultados en dispositivos reales difieran. Proporcionaremos un análisis adicional de los posibles beneficios de las apps a medida que continuemos con las pruebas.
Verifica si el cambio afecta a tu app
Si tu app usa cualquier código nativo, debes volver a compilarla y admitir dispositivos de 16 KB. Si no sabes con seguridad si tu app usa código nativo, puedes usar el Analizador de APK para identificar si hay código nativo presente.
Si tu app solo usa código escrito en el lenguaje de programación Java o en Kotlin, incluidas todas las bibliotecas o SDKs, entonces ya es compatible con dispositivos de 16 KB. Sin embargo, te recomendamos que pruebes tu app en un entorno de 16 KB para verificar que no haya regresiones inesperadas en su comportamiento.
Cambios obligatorios para que algunas apps admitan el espacio privado
El espacio privado es una nueva función de Android 15 que les permite a los usuarios crear un espacio separado en su dispositivo donde puedan mantener alejadas las aplicaciones sensibles de las miradas indiscretas, con una capa adicional de autenticación. Debido a que las apps de el espacio privado tienen visibilidad restringida, algunos tipos de aplicaciones deben ocupar pasos adicionales para poder ver las apps e interactuar con ellas en la privacidad espacio.
Todas las apps
Como las aplicaciones en el espacio privado se guardan en un perfil de usuario independiente, las apps a los perfiles de trabajo, las apps no deberían dar por sentado que cualquier copias de la app que no están en el perfil principal se encuentran en el perfil de trabajo. Si Tu app tiene una lógica relacionada con apps de perfil de trabajo que suponen esto. tendrás que ajustar esta lógica.
Apps médicas
Cuando un usuario bloquea el espacio privado, se detienen todas las apps que este contiene y esas apps no pueden realizar actividades en primer o segundo plano, lo que incluye mostrando notificaciones. Este comportamiento puede tener un impacto crítico en el uso función de las apps médicas instaladas en el espacio privado.
La experiencia de configuración del espacio privado advierte a los usuarios que el espacio privado no está Adecuado para apps que necesiten realizar tareas esenciales en primer o segundo plano actividades, como mostrar notificaciones de aplicaciones médicas. Sin embargo, las apps no pueden determinar si se usan en el espacio privado por lo que no puede mostrar una advertencia para este caso.
Por estos motivos, si desarrollas una app médica, revisa las posibles afectar tu app y tomar las medidas adecuadas, como informar a los usuarios que no instalar tu aplicación en el espacio privado, para no interrumpir la aplicación capacidades de integración.
Apps de lanzamiento
Si desarrollas una app de selector, debes hacer lo siguiente antes que las apps en la el espacio privado estarán visibles:
- Tu app debe estar asignada como la app de selector predeterminada del dispositivo; de esta forma,
es poseer el rol
ROLE_HOME
. - Tu app debe declarar el
ACCESS_HIDDEN_PROFILES
. el permiso normal en el archivo de manifiesto de tu app.
Las apps de Launcher que declaran el permiso ACCESS_HIDDEN_PROFILES
deben controlar
los siguientes casos de uso de espacio privado:
- Tu app debe tener un contenedor de selector independiente para las apps instaladas en
espacio privado. Usa el método
getLauncherUserInfo()
para determinar qué tipo de perfil de usuario se administra. - El usuario debe poder ocultar y mostrar el contenedor del espacio privado.
- El usuario debe poder bloquear y desbloquear el contenedor del espacio privado. Usa
el método
requestQuietModeEnabled()
para bloquear (por pasandotrue
) o desbloquear (pasandofalse
) el espacio privado. Mientras esté bloqueado, ninguna app en el contenedor del espacio privado debe estar visible o detectable a través de mecanismos como la búsqueda. Tu app debe registrar un receptor de la
ACTION_PROFILE_AVAILABLE
yACTION_PROFILE_UNAVAILABLE
y actualiza la IU de tu app cuando el estado bloqueado o desbloqueado del espacio privado los cambios del contenedor. Ambas transmisiones incluyenEXTRA_USER
, que tu app puede usar para hacer referencia a la usuario de perfil privado.También puedes usar el método
isQuietModeEnabled()
para Comprobar si el perfil del espacio privado está bloqueado o no.
Apps de tiendas de aplicaciones
El espacio privado incluye la opción "Instalar apps" botón que lanza una acción
para instalar apps en el espacio privado del usuario. Para que tu app pueda
para recibir este intent implícito, declara un <intent-filter>
.
en el archivo de manifiesto de tu app con un <category>
de
CATEGORY_APP_MARKET
Se quitó la fuente de emojis basada en PNG
El archivo de fuente de emojis heredado basado en PNG (NotoColorEmojiLegacy.ttf
) se
y deja solo el archivo basado en vectores. A partir de Android 13 (API
nivel 33), el archivo de fuente de emoji utilizado por el procesador de emojis del sistema cambió de un
archivo basado en PNG a un archivo basado en vectores. El sistema retuvo
el archivo de fuentes heredado en Android 13 y 14 por motivos de compatibilidad, de modo que
las apps con sus propios procesadores de fuentes podrían seguir usando el archivo de fuentes heredado
hasta que pudieron actualizarlas.
Para comprobar si tu app se ve afectada, busca en el código de la app referencias a la
NotoColorEmojiLegacy.ttf
.
Puedes elegir adaptar tu app de varias maneras:
- Usa las APIs de la plataforma para la renderización de texto. Cómo renderizar texto en un mapa de bits respaldado
Canvas
y úsalo para obtener una imagen sin procesar si es necesario. - Agrega compatibilidad con fuentes COLRv1 a tu app. La biblioteca de código abierto FreeType admite COLRv1 en la versión 2.13.0 y mayores.
- Como último recurso, puedes empaquetar el archivo de fuentes de emojis heredados
(
NotoColorEmoji.ttf
) en tu APK aunque, en ese caso, tu app no contará con las actualizaciones de emojis más recientes. Para para obtener más información, consulta el proyecto Noto de emojis en GitHub .
Se aumentó la versión mínima del SDK de destino de 23 a 24
Android 15 se basa en los cambios que se realizaron en Android 14 y amplía aún más esta seguridad. En Android 15, no se pueden instalar apps con un targetSdkVersion
inferior a 24.
Exigir que las apps cumplan con niveles de API modernos ayuda a garantizar una mejor seguridad y privacidad.
A menudo, el software malicioso se orienta a niveles de API inferiores para evitar las protecciones de seguridad y privacidad que se introdujeron en versiones posteriores de Android. Por ejemplo, algunas apps de software malicioso usan targetSdkVersion
de 22 para evitar que estén sujetas al modelo de permisos de tiempo de ejecución que, en 2015, introdujo Android 6.0 Marshmallow (nivel de API 23). Este cambio en Android 15 dificulta que el software malicioso evite las mejoras de seguridad y privacidad. Si intentas instalar una app que se oriente a un nivel de API inferior, se producirá un error de instalación y aparecerá un mensaje como el siguiente en Logcat:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
En los dispositivos que se actualizan a Android 15, las apps que tengan un targetSdkVersion
inferior a 24 permanecerán instaladas.
Si necesitas probar una app que se oriente a un nivel de API anterior, usa el siguiente comando de adb:
adb install --bypass-low-target-sdk-block FILENAME.apk
Cámara y contenido multimedia
Android 15 realiza los siguientes cambios en el comportamiento de la cámara y el contenido multimedia para todos de Google Chat.
La reproducción de audio directa y de descarga ahora invalida las pistas de audio directas o de descarga que estaban abiertas cuando se alcanza el límite de recursos.
Antes de Android 15, si una app solicitaba la reproducción de audio directa o de descarga mientras otra reproducía audio y se alcanzaban los límites de recursos, la app no podía abrir una nueva AudioTrack
.
A partir de Android 15, cuando una app solicita una reproducción directa o de descarga y se alcanzan los límites de recursos, el sistema invalida cualquier objeto AudioTrack
abierto actualmente, lo que impide completar la nueva solicitud de segmento.
(Las pistas de audio directas y de descarga generalmente se abren para la reproducción de formatos de audio comprimidos. Los casos de uso comunes para reproducir audio directo incluyen la transmisión de audio codificado por HDMI a una TV. Por lo general, las pistas de descarga se usan para reproducir audio comprimido en un dispositivo móvil con aceleración de DSP de hardware).
IU del sistema y experiencia del usuario
Android 15 incluye algunos cambios destinados a crear un entorno una experiencia del usuario intuitiva.
Animaciones de atrás predictivo habilitadas para apps habilitadas
A partir de Android 15, se quitó la opción para desarrolladores para las animaciones de atrás predictivo. Las animaciones del sistema, como volver a la página principal, cambiar de tarea y cambiar de actividad, ahora aparecen para las apps que habilitaron el gesto atrás predictivo, ya sea por completo o a nivel de actividad. Si tu app se ve afectada, toma las siguientes medidas:
- Asegúrate de que la app se haya migrado de forma correcta para usar el gesto atrás predictivo.
- Asegúrate de que las transiciones de fragmentos funcionen con la navegación hacia atrás predictivo.
- Migra desde las transiciones de animación y framework y usa transiciones de animador y androidx en su lugar.
- Migra desde las pilas de actividades que
FragmentManager
no conoce. Usa pilas de actividades administradas porFragmentManager
o por el componente Navigation en su lugar.
Widgets que se inhabilitan cuando el usuario fuerza la detención de una app
Si un usuario fuerza la detención de una app en un dispositivo que ejecuta Android 15, el sistema inhabilita temporalmente todos los widgets de la app. Los widgets están inhabilitados y el usuario no puede interactuar con ellos. Esto se debe a que, a partir de Android 15, el sistema cancela todos los intents pendientes de una app cuando esta se detiene de manera forzosa.
El sistema volverá a habilitar esos widgets la próxima vez que el usuario inicie la app.
Para obtener más información, consulta Cambios en el estado de paquete detenido.
Bajas
Con cada versión, es posible que las APIs de Android específicas queden obsoletas o deban refactorizar para brindar una mejor experiencia al desarrollador o admitir una nueva plataforma capacidades de integración. En estos casos, las APIs y las APIs obsoletas dejarán de estar disponibles oficialmente y pedirles a los desarrolladores que usen APIs alternativas.
La baja significa que finalizamos la asistencia oficial para las APIs, pero estas seguirán disponibles para los desarrolladores. Para obtener más información bajas en esta versión de Android, consulta la página de bajas.