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 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

一直以来,Android 仅支持 4 KB 的内存页面大小,针对 Android 设备通常拥有的平均总内存量,系统内存性能进行了优化。从 Android 15 开始,Android 支持配置为使用 16 KB 页面大小的设备(即 16 KB 设备)。

随着设备制造商不断打造具有更大物理内存 (RAM) 的设备,这些设备中的许多可能会配置 16 KB(最终更大)的页面大小,以优化设备的性能。添加对 16 KB 设备的支持可让您的应用在这些设备上运行,并帮助您的应用从相关性能改进中受益。为了帮助您解决此问题,我们提供了一些指南,帮助您了解如何检查您的应用是否受到影响、如何重新构建应用(如果适用),以及如何同时使用模拟器和实体设备在 16 KB 的环境中测试应用

Aumento de los beneficios y del rendimiento

配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。在继续测试的过程中,我们会进一步分析应用的潜在益处。

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 las apps sensibles lejos de miradas indiscretas con una capa adicional de autenticación. Como las apps del espacio privado tienen visibilidad restringida, algunos tipos de apps deben realizar pasos adicionales para poder ver las apps en el espacio privado de un usuario e interactuar con ellas.

Todas las apps

Como las apps en el espacio privado se guardan 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 se encuentran en el perfil de trabajo. Si tu app tiene una lógica relacionada con las apps de perfil de trabajo que suponen esto, deberás ajustarla.

Apps de lanzamiento

Si desarrollas una app de selector, debes hacer lo siguiente para que las apps del espacio privado estén visibles:

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

Las apps de selector que declaren 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. Usa el método getLauncherUserInfo() para determinar qué tipo de perfil de usuario se administra.
  2. El usuario debe poder ocultar y mostrar el contenedor del espacio privado.
  3. El usuario debe poder bloquear y desbloquear el contenedor del espacio privado. Usa el método requestQuietModeEnabled() para bloquear (pasando true) o desbloquear (pasando false) el espacio privado.
  4. Mientras está bloqueada, ninguna app en el contenedor de espacio privado debe ser visible ni detectable a través de mecanismos como la búsqueda. Tu app debe registrar un receptor para las transmisiones ACTION_PROFILE_AVAILABLE y ACTION_PROFILE_UNAVAILABLE, y actualizar la IU de tu app cuando cambie el estado bloqueado o desbloqueado del contenedor de espacio privado. Ambas transmisiones incluyen EXTRA_USER, que tu app puede usar para referirse al usuario del perfil privado.

    También puedes usar el método isQuietModeEnabled() para verificar si el perfil del espacio privado está bloqueado o no.

Apps de tiendas de aplicaciones

El espacio privado incluye el 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

在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack 对象失效,从而阻止执行新的轨道请求。

(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

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

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

Se inhabilitan los widgets 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 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.