Cambios en el marco de compatibilidad (Android 16)

Figura 1: La pantalla Cambios de compatibilidad con apps de las opciones para desarrolladores muestra los cambios que puedes activar o desactivar.

En esta página, se describen los cambios que se pueden activar o desactivar y que forman parte del marco de compatibilidad de Android 16. Usa esta lista, junto con las opciones para desarrolladores y los comandos de ADB, para probar y depurar tu app mientras te preparas para la compatibilidad y la orientación a Android 16.

A continuación, te mostramos algunas de las acciones que puedes realizar con las herramientas del marco de compatibilidad:

  • Probar los cambios orientados sin cambiar realmente la targetSdkVersion de la app. Puedes usar los botones de activación y desactivación para forzar cambios de comportamiento orientados específicos a fin de evaluar el impacto en tu app existente.
  • Enfocar tus pruebas solo a cambios específicos. En lugar de tener que abordar todos los cambios orientados a la vez, los botones de activación y desactivación te permiten inhabilitar todos los cambios orientados, excepto los que deseas probar.
  • Administrar los cambios que se pueden activar y desactivar mediante adb. Puedes usar comandos ADB para habilitar o inhabilitar los cambios que se pueden activar o desactivar en tu entorno de prueba automatizado.
  • Depurar más rápido con los ID de cambio estándar. Cada cambio que se puede activar y desactivar tiene un ID y un nombre únicos que puedes usar para depurar rápidamente la causa raíz en el resultado del registro.

Si quieres obtener más información sobre cómo usar las herramientas para cada uno de estos casos de uso, consulta Herramientas del marco de compatibilidad.

Cambios de comportamiento incluidos en el marco de compatibilidad

En la lista de esta sección, se describen los cambios que se pueden activar o desactivar y que se incluyen en el marco de compatibilidad para los cambios relacionados con Android 16 y los cambios que se pueden activar o desactivar que pueden ayudar con las pruebas generales de apps.

Puedes filtrar la lista de cambios por Estado predeterminado.

Cambios que se pueden activar o desactivar en el marco de compatibilidad de Android 16

CAMERA_MIC_INDICATORS_NOT_PRESENT

ID del cambio: 162547999
Estado predeterminado: Inhabilitado para todas las apps.

Indica que este dispositivo admite indicadores de cámara y micrófono. El valor es false si está presente, porque el método CompatChanges#isChangeEnabled muestra true si el ID de cambio no está presente.

DOWNSCALED

ID del cambio: 168419799
Estado predeterminado: Inhabilitado para todas las apps.

Este cambio es el guardián de todos los cambios de escalamiento descendente de búfer por app. Si se habilita este cambio, se podrán aplicar los siguientes factores de escala:

Cuando se habilita este cambio para un paquete de app, se fuerza el cambio de tamaño de la app al factor de escala más alto habilitado. Por ejemplo, se usará 80% si tanto 80% como 70% (DOWNSCALE_80 y DOWNSCALE_70) están habilitados. Cuando se habilitan este cambio y DOWNSCALED_INVERSE, DOWNSCALED_INVERSE tiene prioridad y el factor de escala se aplica de forma inversa.

DOWNSCALED_INVERSE

ID del cambio: 273564678
Estado predeterminado: Inhabilitado para todas las apps.

Este cambio es el guardián de todos los cambios de escalamiento descendente inverso de búfer por app. Si se habilita este cambio, se pueden aplicar de forma inversa los siguientes factores de escala (es decir, la resolución se aumenta):

Cuando se habilita este cambio para un paquete de app, se fuerza el cambio de tamaño de la app al factor de escala más bajo habilitado. Por ejemplo, se usa el 80% si están habilitados el 80% y el 70% (DOWNSCALE_80 y DOWNSCALE_70) porque, cuando se aplica de forma inversa, un factor de escalamiento del 80% es igual al 125%, que es menor que el escalamiento del 142.86% que se aplica cuando se aplica de forma inversa un factor de escalamiento del 70%. Cuando se habilitan este cambio y DOWNSCALED, DOWNSCALED_INVERSE tiene prioridad y el factor de escala se aplica de forma inversa.

DOWNSCALE_30

ID del cambio: 189970040
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 30% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 333.33% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_35

ID del cambio: 189969749
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 35% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 285.71% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_40

ID del cambio: 189970038
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 40% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 250% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_45

ID del cambio: 189969782
Estado predeterminado: Inhabilitado para todas las apps.

Si también se habilita DOWNSCALED, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 45% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 222.22% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_50

ID del cambio: 176926741
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 50% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 200% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_55

ID del cambio: 189970036
Estado predeterminado: Inhabilitado para todas las apps.

Si también se habilita DOWNSCALED, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 55% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 181.82% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_60

ID del cambio: 176926771
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 60% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 166.67% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_65

ID del cambio: 189969744
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 65% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 153.85% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_70

ID del cambio: 176926829
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 70% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 142.86% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_75

ID del cambio: 189969779
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 75% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 133.33% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_80

ID del cambio: 176926753
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 80% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 125% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_85

ID del cambio: 189969734
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 85% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 117.65% de la resolución vertical y horizontal de la pantalla real.

DOWNSCALE_90

ID del cambio: 182811243
Estado predeterminado: Inhabilitado para todas las apps.

Si DOWNSCALED también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 90% de la resolución vertical y horizontal de la pantalla real. Si DOWNSCALED_INVERSE también está habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 111.11% de la resolución vertical y horizontal de la pantalla real.

ENFORCE_STRICT_QUERY_BUILDER

ID del cambio: 143231523
Estado predeterminado: Inhabilitado para todas las apps.

Cuando se habilita, SQLiteQueryBuilder verifica todas las selecciones de consultas de CalendarProvider2 con argumentos maliciosos.

FORCE_DISABLE_HEVC_SUPPORT

ID del cambio: 174227820
Estado predeterminado: Inhabilitado para todas las apps.

Fuerza la inhabilitación de una app para que no sea compatible con la capacidad de contenido multimedia HEVC. Las apps deben declarar las capacidades de contenido multimedia admitidas en su manifiesto, pero esta marca puede usarse para forzar el acceso de una app a HEVC, lo que fuerza la transcodificación mientras se accede al contenido multimedia codificado en HEVC. La configuración de esta marca anula cualquier valor predeterminado en el nivel del SO para las apps. Está inhabilitado de forma predeterminada, lo que significa que los valores predeterminados del SO tienen prioridad. Si se habilitan esta marca y FORCE_ENABLE_HEVC_SUPPORT, el SO ignora ambas marcas.

FORCE_ENABLE_HEVC_SUPPORT

ID del cambio: 174228127
Estado predeterminado: Inhabilitado para todas las apps.

Fuerza a una app a admitir la capacidad de contenido multimedia HEVC. Las apps deberían declarar las capacidades de contenido multimedia en su manifiesto, pero esta marca se puede usar para forzar a la app a admitir HEVC. Por lo tanto, se debe evitar la transcodificación mientras se accede al contenido multimedia codificado en HEVC. La configuración de esta marca anula cualquier valor predeterminado en el nivel del SO para las apps. Está inhabilitado de forma predeterminada, lo que significa que los valores predeterminados del SO tendrán prioridad. Si se habilitan esta marca y FORCE_DISABLE_HEVC_SUPPORT, el SO ignora ambas marcas.

FORCE_NON_RESIZE_APP

ID del cambio: 181146395
Estado predeterminado: Inhabilitado para todas las apps.

Fuerza los paquetes a los que se aplica de modo que no puedan cambiar el tamaño.

FORCE_RESIZE_APP

ID del cambio: 174042936
Estado predeterminado: Inhabilitado para todas las apps.

Fuerza los paquetes a los que se aplica para que puedan cambiar el tamaño. Solo permitimos cambiar el tamaño en el modo de renderización de ventanas de pantalla completa, pero no se fuerza a la app a cambiar el tamaño del modo multiventana.

GWP_ASAN

ID del cambio: 145634846
Estado predeterminado: Inhabilitado para todas las apps.

Habilita la detección de errores en la memoria nativa de muestra en las apps.

Para obtener más información sobre el uso de GWP-ASan, consulta la guía de GWP-ASan.

NATIVE_HEAP_ZERO_INIT

ID del cambio: 178038272
Estado predeterminado: Inhabilitado para todas las apps.

Habilita la inicialización automática en cero de las asignaciones de memoria del montón nativo.

NATIVE_MEMTAG_ASYNC

ID del cambio: 145772972
Estado predeterminado: Inhabilitado para todas las apps.

Habilita la verificación de etiquetas de memoria asíncrona (ASYNC) en este proceso. Esta marca solo afecta el hardware que admite la extensión de etiquetado de memoria (MTE) de ARM.

NATIVE_MEMTAG_SYNC

ID del cambio: 177438394
Estado predeterminado: Inhabilitado para todas las apps.

Habilita la verificación de etiquetas de memoria síncrona (SYNC) en este proceso. Esta marca solo afecta el hardware que admite la extensión de etiquetado de memoria (MTE) de ARM. Si NATIVE_MEMTAG_ASYNC y esta opción están habilitadas, esta opción tiene prioridad y la MTE se habilita en modo SYNC.

OVERRIDE_ANY_ORIENTATION

ID del cambio: 265464455
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, este cambio permite que se apliquen las siguientes anulaciones de orientación, independientemente de la orientación que solicite la actividad:

OVERRIDE_ANY_ORIENTATION_TO_USER

ID del cambio: 310816437
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, habilita SCREEN_ORIENTATION_USER, que anula cualquier orientación que solicite la actividad. Las apps de orientación fija se pueden anular para que se muestren en pantalla completa en dispositivos con pantalla grande que tengan ignoreOrientationRequest habilitado con esta anulación.

OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT

ID del cambio: 314961188
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, excluye los paquetes a los que se aplica la anulación del tratamiento de compatibilidad de la cámara en el modo de ventana de formato libre para apps con orientación fija.

En el modo de ventanas de formato libre, el tratamiento de compatibilidad emula el funcionamiento en un dispositivo vertical, ya que aplica el formato letterbox a la ventana de la app y cambia las características de la cámara a lo que las apps suelen esperar en un dispositivo vertical: rotación del sensor de 90 y 270 grados para las cámaras posterior y frontal, respectivamente, y configuración de la rotación de la pantalla en 0.

Usa esta marca para inhabilitar el tratamiento de compatibilidad para las apps que no responden bien al tratamiento.

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

ID del cambio: 191514214
Estado predeterminado: Inhabilitado para todas las apps.

Cuando se habilita, este cambio fuerza a los paquetes a los que se aplica a ignorar el valor actual de android:resizeableActivity y al SDK de destino igual o inferior a Android 6.0 (nivel de API 23) y a considerar que la actividad no puede cambiar de tamaño. En este caso, el valor de la rotación y el recorte de la cámara solo dependen de la compensación necesaria si se considera la rotación actual de la pantalla.

OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS

ID del cambio: 189229956
Estado predeterminado: Inhabilitado para todas las apps.

Cuando se habilita, este cambio fuerza los paquetes a los que se aplica a anular el comportamiento predeterminado de rotación y recorte de la cámara, y a mostrar siempre CaptureRequest.SCALER_ROTATE_AND_CROP_NONE.

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

ID del cambio: 316897322
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, garantiza que los usuarios tengan la opción de capturar una sola app o toda la pantalla cuando inician una sesión de MediaProjection, anulando el uso de MediaProjectionConfig#createConfigForDefaultDisplay.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

ID del cambio: 266124927
Estado predeterminado: Inhabilitado para todas las apps.

Habilita SCREEN_ORIENTATION_REVERSE_LANDSCAPE para la app a la que se aplica. A menos que también esté habilitado OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_REVERSE_LANDSCAPE solo se usa cuando la actividad especifica la orientación horizontal. Habilitar este cambio puede ayudarte a probar el comportamiento de tu app en busca de diferencias entre los dispositivos en los que la orientación horizontal corresponde a Surface.ROTATION_90 y los dispositivos en los que corresponde a Surface.ROTATION_270.

OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE

ID del cambio: 332679525
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, anula el diseño en el comportamiento del modo de corte de pantalla. Esto solo se aplicará si no se aplica el diseño de pantalla completa.

OVERRIDE_MIN_ASPECT_RATIO

ID del cambio: 174042980
Estado predeterminado: Inhabilitado para todas las apps.

Este cambio es el guardián de todos los cambios que fuercen una relación de aspecto mínima dada. Si se habilita este cambio, se podrán aplicar las siguientes relaciones de aspecto mínimas:

Cuando se habilita este cambio para un paquete de app, la relación de aspecto mínima proporcionada en el manifiesto de la app se anula con la relación de aspecto más grande habilitada, a menos que el valor del manifiesto de la app sea superior.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

ID del cambio: 218959984
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitada, anula la restricción de relación de aspecto mínima en la pantalla completa vertical para usar todo el espacio de pantalla disponible.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

ID del cambio: 180326787
Estado predeterminado: Inhabilitado para todas las apps.

Cuando también se habilita OVERRIDE_MIN_ASPECT_RATIO, habilitar este cambio para un paquete establece la relación de aspecto mínima de la actividad en un valor alto definido por OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

ID del cambio: 180326845
Estado predeterminado: Inhabilitado para todas las apps.

Cuando también se habilita OVERRIDE_MIN_ASPECT_RATIO, habilitar este cambio para un paquete establece la relación de aspecto mínima de la actividad en un valor medio definido por OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA

ID del cambio: 325586858
Estado predeterminado: Inhabilitado para todas las apps.

Cuando está habilitado, restringe los tratamientos que fuerzan una relación de aspecto mínima determinada para que solo se apliquen cuando una app está conectada a la cámara.

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

ID del cambio: 203647190
Estado predeterminado: Habilitado para todas las apps.

Cuando también se habilita OVERRIDE_MIN_ASPECT_RATIO, este cambio limita cualquier otro cambio que fuerce la relación de aspecto mínima de una actividad a un valor determinado, como OVERRIDE_MIN_ASPECT_RATIO_LARGE y OVERRIDE_MIN_ASPECT_RATIO_MEDIUM, para actividades que también tienen una orientación vertical.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

ID del cambio: 236283604
Estado predeterminado: Inhabilitado para todas las apps.

Cuando se habilita, este cambio excluye los paquetes a los que se aplica de las restricciones de ignorar la orientación que los fabricantes de dispositivos pueden establecer.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

ID del cambio: 265451093
Estado predeterminado: Inhabilitado para todas las apps.

Habilita SCREEN_ORIENTATION_NOSENSOR para la app a la que se aplica. A menos que también esté habilitado OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_NOSENSOR se usa solo cuando la actividad no especifica ninguna otra orientación fija.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

ID del cambio: 265452344
Estado predeterminado: Inhabilitado para todas las apps.

Habilita SCREEN_ORIENTATION_PORTRAIT para la app a la que se aplica. A menos que también esté habilitado OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_PORTRAIT se usa solo cuando la actividad no especifica ninguna otra orientación fija.

RATE_LIMIT_TOASTS

ID del cambio: 174840628
Estado predeterminado: Este cambio no se puede activar ni desactivar. Solo se registra en el marco de compatibilidad.

Habilita el límite de frecuencia en la cantidad de llamadas a Toast.show() para evitar que el usuario se sobrecargue con demasiados avisos en un tiempo limitado. Cualquier intento de mostrar más avisos de lo que se permite en un período determinado hará que se descarten los avisos.

STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS

ID del cambio: 288912692
Estado predeterminado: Habilitado para apps que se orientan a Android 16 o versiones posteriores.

Cuando está habilitado, se ejecuta de inmediato como máximo una ejecución perdida de scheduleAtFixedRate cuando una app vuelve a un ciclo de vida válido.

Para obtener más información sobre este cambio, consulta la sección sobre la optimización de programación de trabajo de tarifa fija en la página de cambios de comportamiento de Android 16.

UNIVERSAL_RESIZABLE_BY_DEFAULT

ID del cambio: 357141415
Estado predeterminado: Habilitado para apps que se orientan a Android 16 o versiones posteriores.

Cuando se habilita, se ignoran las restricciones de orientación, cambio de tamaño y relación de aspecto de la app en pantallas grandes (pantallas con un ancho superior a 600 dp).

Para obtener más información sobre este cambio, consulta la sección sobre diseños adaptables en la página de cambios de comportamiento de Android 16.

USE_EXPERIMENTAL_COMPONENT_ALIAS

ID del cambio: 196254758
Estado predeterminado: Inhabilitado para todas las apps.

Cuando se habilita, el sistema permite que el paquete "android" use alias de componentes.