Cambios en el marco de compatibilidad (Android 14)

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 14 (nivel de API 34). 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 14.

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 de Android 14.

Puedes filtrar la lista de cambios por Estado predeterminado.

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

ACCESS_SHARED_IDENTITY

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

Otorga acceso a la identidad de la app de lanzamiento si esta aceptó compartir su identidad a través del inicio de esta actividad con una instancia de ActivityOptions en la que se invocó ActivityOptions.setShareIdentityEnabled(boolean) con un valor de true o si el UID de la actividad que se inició es el mismo que el de la app de inicio. Cuando se habilita este cambio y se cumple uno de estos requisitos, la actividad puede acceder al UID de la app de lanzamiento y al nombre del paquete con Activity.getLaunchedFromUid() y Activity.getLaunchedFromPackage(), respectivamente.

ANR_PRE_UDC_APIS_ON_SLOW_RESPONSES

ID del cambio: 258236856
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, activa un mensaje de "Aplicación no responde" (ANR) cuando las apps tardan en responder a las APIs y a la funcionalidad de Android 13 (nivel de API 33) o versiones anteriores.

AUTHORITY_ACCESS_CHECK_CHANGE_ID

ID del cambio: 207133734
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, se puede verificar el acceso a la autoridad para el UID de llamada en todas las APIs relacionadas con la sincronización.

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.

DEFAULT_RESCIND_BAL_PRIVILEGES_FROM_PENDING_INTENT_SENDER

ID del cambio: 244637991
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando una app envía un objeto PendingIntent con PendingIntent#send() o métodos similares, ahora debe aceptar si desea otorgar sus propios privilegios de inicio de la actividad en segundo plano para iniciar el intent pendiente.

Para obtener más información sobre este cambio, consulta la sección sobre las restricciones adicionales para iniciar actividades en segundo plano en la página de cambios de comportamiento de Android 14.

DETACH_THROWS_ISE_ONLY

ID del cambio: 236825255
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Marca para evitar la excepción correcta que arroja #detachImage.

#detachImage se documenta como arrojar IllegalStateException en caso de un error; un método de ayuda nativo para esto arrojaba RuntimeException si la plataforma se abandonaba mientras se desconectaba Image.

Este comportamiento de excepción no documentado continuará hasta Android 13 (nivel de API 33).

Después de Android 13 (nivel de API 33), el método de ayuda nativo solo arroja IllegalStateExceptions de acuerdo con la documentación.

Cuando este cambio está habilitado, #detachImage solo muestra una IllegalStateException si encuentra errores cuando desconecta la imagen. No se modificará el comportamiento de las apps que se orienten a Android 13 (nivel de API 33) y versiones anteriores.

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 habilitas 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 usa el 80% si están habilitados el 80% y el 70% (DOWNSCALE_80 y DOWNSCALE_70). Cuando se habilitan este cambio y DOWNSCALED_INVERSE, DOWNSCALED_INVERSE tiene prioridad y el factor de escala se aplica a la 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 inversos del búfer por app. Si se habilita este cambio, se podrán aplicar los siguientes factores de escala de forma inversa (es decir, se aumenta la resolución):

Cuando se habilita este cambio para un paquete de app, su tamaño se ve forzado al factor de escala más bajo habilitado. Por ejemplo, se usa el 80% si tanto el 80% como el 70% (DOWNSCALE_80 y DOWNSCALE_70) están habilitados porque, cuando se aplican de manera inversa, un factor de escala del 80% equivale al 125%, que es inferior al 142.86% que se aplica cuando se aplica de forma inversa el factor de escala del 70%. Cuando se habilitan este cambio y DOWNSCALED, DOWNSCALED_INVERSE tiene prioridad y el factor de escala se aplica a la inversa.

DOWNSCALE_30

ID del cambio: 189970040
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 30% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 333.33% de las resoluciones verticales y horizontales de la pantalla real.

DOWNSCALE_35

ID del cambio: 189969749
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 35% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 285.71% de las resoluciones vertical y horizontal de la pantalla real.

DOWNSCALE_40

ID del cambio: 189970038
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 40% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 250% de las resoluciones 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 un 45% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 222.22% de las resoluciones verticales y horizontales de la pantalla real.

DOWNSCALE_50

ID del cambio: 176926741
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 50% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 200% de las resoluciones 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 las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 181.82% de las resoluciones vertical y horizontal de la pantalla real.

DOWNSCALE_60

ID del cambio: 176926771
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 60% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 166.67% de las resoluciones vertical y horizontal de la pantalla real.

DOWNSCALE_65

ID del cambio: 189969744
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 65% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 153.85% de las resoluciones verticales y horizontales de la pantalla real.

DOWNSCALE_70

ID del cambio: 176926829
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 70% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 142.86% de las resoluciones vertical y horizontal de la pantalla real.

DOWNSCALE_75

ID del cambio: 189969779
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 75% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 133.33% de las resoluciones verticales y horizontales de la pantalla real.

DOWNSCALE_80

ID del cambio: 176926753
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 80% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 125% de las resoluciones vertical y horizontal de la pantalla real.

DOWNSCALE_85

ID del cambio: 189969734
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 85% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 117.65% de las resoluciones verticales y horizontales de la pantalla real.

DOWNSCALE_90

ID del cambio: 182811243
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 90% de las resoluciones vertical y horizontal de la pantalla real. Si también se habilita DOWNSCALED_INVERSE, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con el 111.11% de las resoluciones vertical y horizontal de la pantalla real.

ENABLE_PLATFORM_MDNS_BACKEND

ID del cambio: 270306772
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Las apps orientadas a Android 14 o versiones posteriores usan una implementación de mDNS integrada en la plataforma como backend, mientras que las que se orientan a versiones anteriores continúan usando un backend de descubrimiento de servicios de red (NSD) heredado (con un daemon nativo heredado como backend de NsdManager).

ENABLE_SELF_CERTIFIED_CAPABILITIES_DECLARATION

ID del cambio: 266524688
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

La verificación de capacidades con autocertificación está habilitada para las apps orientadas a Android 14 o versiones posteriores. Consulta NetworkCapabilities para obtener más información.

ENFORCE_PACKAGE_VISIBILITY_FILTERING

ID del cambio: 154726397
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, las apps deben declarar las necesidades de visibilidad de paquetes en el manifiesto para acceder a las APIs de AccountManager.

ENFORCE_READ_ONLY_JAVA_DCL

ID del cambio: 218865702
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, requiere que todos los archivos cargados de forma dinámica se marquen como de solo lectura. De esta manera, se evita que los archivos que se cargan de forma dinámica no sean reemplazados por personas malintencionadas.

Para obtener más información sobre este cambio, consulta la sección sobre carga de código dinámico más segura en la página de cambios de comportamiento de Android 14.

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 para detectar argumentos maliciosos.

EXACT_LISTENER_ALARMS_DROPPED_ON_CACHED

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

Las alarmas exactas que esperan una devolución de llamada AlarmManager.OnAlarmListener se descartan cuando la app que realiza la llamada pasa a un estado almacenado en caché.

Para obtener más información sobre los cambios en las alarmas exactas de Android 14, consulta Cómo programar alarmas exactas que se rechazan de forma predeterminada.

FGS_TYPE_CHECK_FOR_INSTANT_APPS

ID del cambio: 261055255
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, las apps instantáneas deben especificar tipos de servicio en primer plano apropiados para cualquier servicio que se declare en el archivo de manifiesto de la app.

Para obtener más información sobre este cambio, consulta la página en la que se describen los cambios en los tipos de servicios en primer plano.

FGS_TYPE_NONE_DEPRECATION_CHANGE_ID

ID del cambio: 255042465
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, las apps orientadas a Android 14 (nivel de API 34) y versiones posteriores que inician un servicio en primer plano con el tipo obsoleto FOREGROUND_SERVICE_TYPE_NONE generan una advertencia en el registro.

Para obtener más información sobre este cambio, consulta la página en la que se describen los cambios en los tipos de servicios en primer plano.

FGS_TYPE_NONE_DISABLED_CHANGE_ID

ID del cambio: 255038118
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, las apps orientadas a Android 14 (nivel de API 34) y versiones posteriores que inician un servicio en primer plano con el tipo obsoleto FOREGROUND_SERVICE_TYPE_NONE generan una excepción.

Para obtener más información sobre este cambio, consulta la página en la que se describen los cambios en los tipos de servicios en primer plano.

FGS_TYPE_PERMISSION_CHANGE_ID

ID del cambio: 254662522
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores que inician un servicio en primer plano sin los permisos necesarios asociados con ese tipo de servicio generan una SecurityException.

Para obtener más información sobre este cambio, consulta la página en la que se describen los cambios en los tipos de servicios en primer plano.

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 se puede usar para forzar a una app a que no admita HEVC, lo que fuerza la transcodificación mientras se accede a 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 tanto esta marca como FORCE_ENABLE_HEVC_SUPPORT están habilitadas, el SO ignora ambas marcas.

FORCE_ENABLE_HEVC_SUPPORT

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

Fuerza la habilitación de una app para admitir la capacidad de contenido multimedia HEVC. Las apps deben declarar las capacidades de contenido multimedia compatibles en su manifiesto, pero esta marca se puede usar para forzar la compatibilidad de una app con HEVC. Por lo tanto, se evita la transcodificación al acceder a 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 tanto esta marca como FORCE_DISABLE_HEVC_SUPPORT están habilitados, 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 de modo 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.

IMPLICIT_INTENTS_ONLY_MATCH_EXPORTED_COMPONENTS

ID del cambio: 229362273
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, se deben exportar los componentes para invocarlos mediante intents implícitos. Si un componente no se exporta y se invoca, se quita de la lista de receptores. Esto se aplica específicamente a las actividades y transmisiones.

Para obtener más información sobre este cambio, consulta la sección sobre las restricciones para intents implícitos y pendientes en la página de cambios de comportamiento de Android 14.

ID del cambio: 266201607
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, las apps deben solicitar al usuario que dé su consentimiento antes de cada sesión de captura MediaProjection.

Para obtener más información sobre este cambio, consulta la sección sobre cómo se requiere el consentimiento del usuario para cada sesión de captura de MediaProjection en la página de cambios de comportamiento de Android 14.

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 nativas de memoria del montón.

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 al 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 al 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 MTE se habilita en modo SYNC.

OVERRIDE_ANY_ORIENTATION

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

Cuando se habilita, este cambio permite aplicar las siguientes anulaciones de orientación independientemente de la orientación que solicite la actividad:

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

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

Cuando se habilita, este cambio obliga 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 M, y consideran que la actividad no puede cambiar de tamaño. En este caso, el valor de rotación y recorte de la cámara solo depende de la compensación necesaria, si se tiene en cuenta 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 a 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_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 se habilite 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 para detectar 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_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 a 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 se habilita, anula la restricción de relación de aspecto mínima en 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 el estado de OVERRIDE_MIN_ASPECT_RATIO también está habilitado, habilitar este cambio para un paquete establece la relación de aspecto mínima de la actividad en un valor grande, 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 el estado de OVERRIDE_MIN_ASPECT_RATIO también es habilitado, 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_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 las actividades que también tienen 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 que se aplican de las restricciones de orientación de omisió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 solo se usa 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 solo se usa 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 sobrecargar al usuario 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.

REJECT_NEGATIVE_NETWORK_ESTIMATES

ID del cambio: 253665015
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

Cuando se habilita, requiere que los bytes de red estimados no sean negativos.

REQUIRE_NETWORK_CONSTRAINT_FOR_NETWORK_JOB_WORK_ITEMS

ID del cambio: 241104082
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, requiere que la tarea de hosting especifique una restricción de red si el JobWorkItem incluido indica el uso de la red.

REQUIRE_NETWORK_PERMISSIONS_FOR_CONNECTIVITY_JOBS

ID del cambio: 271850009
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, las apps deben especificar los permisos INTERNET y ACCESS_NETWORK_STATE cuando se programa un trabajo con una restricción de conectividad.

THROW_ON_INVALID_DATA_TRANSFER_IMPLEMENTATION

ID del cambio: 255371817
Estado predeterminado: Habilitado para apps que se orientan a Android 14 (nivel de API 34) o versiones posteriores.

En el caso de las apps que se orientan a Android 14 (nivel de API 34) y versiones posteriores, el sistema arroja una excepción si una app no implementa correctamente todas las APIs de transferencia de datos necesarias cuando se especifica una tarea de transferencia de datos iniciada por el usuario.

Para obtener más información sobre este cambio, consulta la página en la que se describe cómo migrar servicios en primer plano a tareas de transferencia de datos iniciadas por el usuario.

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.