Cambios de comportamiento: todas las apps

La plataforma de Android 15 incluye cambios de comportamiento que podrían afectar a tu app. Los siguientes cambios se aplican a todas las apps cuando se ejecutan en Android 15, independientemente de targetSdkVersion. Debes probar tu app y, luego, modificarla según corresponda para admitir estos cambios.

Asegúrate también de consultar 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 paquete detenido

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 cancelará todos los intents pendientes cuando la app entre en el estado de detención en Android 15. Cuando las acciones del usuario quitan la app del estado de detención, se entrega la transmisión ACTION_BOOT_COMPLETED a la app, lo que proporciona la oportunidad de volver a registrar los intents pendientes.

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

Históricamente, Android solo admitía tamaños de página de memoria de 4 KB, lo que optimizó el rendimiento de la memoria del sistema para la cantidad promedio de memoria total que los dispositivos Android solían tener. A partir de Android 15, Android admite dispositivos configurados para usar un tamaño de página de 16 KB (dispositivos de 16 KB).

A medida que los fabricantes de dispositivos continúan creando dispositivos con mayores cantidades de memoria física (RAM), es probable que muchos de estos dispositivos estén configurados con tamaños de página de 16 KB (y, eventualmente, más grandes) para optimizar el rendimiento del dispositivo. Agregar compatibilidad con dispositivos de 16 KB permite que tu app se ejecute en esos dispositivos y ayuda a que se beneficie de las mejoras de rendimiento asociadas. Para ayudarte con esto, proporcionamos orientación sobre cómo verificar si tu app se ve afectada, cómo volver a compilarla (si corresponde) y probarla en un entorno de 16 KB con emuladores y dispositivos físicos.

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 función nueva de Android 15 que permite a los usuarios crear un espacio separado en su dispositivo donde pueden mantener a las apps sensibles lejos de miradas indiscretas, bajo una capa adicional de autenticación. Debido a que las apps en el espacio privado tienen visibilidad restringida, algunos tipos de apps deben realizar pasos adicionales para poder verlas e interactuar con las apps en el espacio privado de un usuario.

Todas las apps

Debido a que las apps en el espacio privado se mantienen en un perfil de usuario independiente, similar a los perfiles de trabajo, las apps no deben suponer que las copias instaladas de su app que no están en el perfil principal están en el perfil de trabajo. Si tu app tiene una lógica relacionada con apps de perfil de trabajo que hacen esta suposición, deberás ajustarla.

Apps de lanzamiento

Si desarrollas una app de selector, debes hacer lo siguiente para que las apps en el espacio privado sean visibles:

  1. Tu app debe estar asignada como la app de selector predeterminada del dispositivo, es decir, debe poseer la función ROLE_HOME.
  2. La app debe declarar el permiso normal ACCESS_HIDDEN_PROFILES en el archivo de manifiesto de la app.

Las apps de Launcher que declaran el permiso ACCESS_HIDDEN_PROFILES deben controlar los siguientes casos de uso de espacio privado:

  1. Tu app debe tener un contenedor de selector independiente para las apps instaladas en el espacio privado.
  2. El usuario debe poder ocultar y mostrar el contenedor de espacio privado.
  3. El usuario debe poder bloquear y desbloquear el contenedor de espacio privado.
  4. Mientras esté bloqueada, ninguna app en el contenedor del espacio privado debería estar visible o detectable a través de mecanismos como la búsqueda.
  5. Si el usuario bloquea el dispositivo mientras el contenedor de espacio privado está desbloqueado, el contenedor de espacio privado también debe estar bloqueado.

Apps en tiendas de aplicaciones

El espacio privado incluye un botón "Instalar apps" que inicia un intent implícito para instalar apps en el espacio privado del usuario. Para que tu app reciba este intent implícito, declara un <intent-filter> en el archivo de manifiesto de tu app con un <category> de CATEGORY_APP_MARKET.

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

En Android 15, se realizan los siguientes cambios en el comportamiento de la cámara y el contenido multimedia para todas las apps.

La reproducción de audio directa y de descarga ahora invalida las pistas de audio que antes estaban abiertas, ya sea de forma directa o de descarga, cuando se alcanzan los límites 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 una experiencia del usuario más intuitiva y coherente.

Se habilitaron las animaciones del gesto atrás predictivo para apps que se habilitaron

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 por FragmentManager o por el componente Navigation en su lugar.

Bajas

Con cada versión, es posible que las APIs de Android específicas queden obsoletas o deban refactorizarse para proporcionar una mejor experiencia a los desarrolladores o admitir funciones nuevas de la plataforma. En estos casos, las APIs obsoletas dejaron de estar disponibles oficialmente y dirigimos a los desarrolladores a APIs alternativas para que las usen en su lugar.

La baja significa que finalizamos la asistencia oficial para las APIs, pero seguirán estando disponibles para los desarrolladores. Para obtener más información sobre las bajas destacadas de esta versión de Android, consulta la página de bajas.