Cambios en el marco de compatibilidad (Android 12)

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 describe cada cambio de comportamiento que forma parte del marco de compatibilidad en Android 12. 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 12.

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 describe cada cambio de comportamiento incluido en el marco de compatibilidad de la compilación más reciente de la Vista previa para desarrolladores de Android 12.

Puedes filtrar la lista de cambios por Estado predeterminado.

Cambios de comportamiento agregados al marco de compatibilidad de Android 12

ALLOW_TEST_API_ACCESS

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

Permite que las apps accedan a las API de @TestApi.

Nota: Este cambio está inhabilitado de forma predeterminada y solo debe usarlo el código de prueba de la plataforma.

ALWAYS_SANDBOX_DISPLAY_APIS

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

Fuerza los paquetes a los que se aplica de modo que siempre se aplique la zona de pruebas de la API de Display, independientemente del modo de renderización en ventanas. Las API de Display siempre proporcionarán los límites de la app.

Si deseas obtener más información sobre este cambio, consulta Display#getRealSize y getRealMetrics: baja y zona de pruebas.

BLOCK_FLAG_SLIPPERY

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

En el caso de las apps que se ejecutan en Android 12, comprueba si se usa FLAG_SLIPPERY con cualquier ventana de la app. Esperamos que solo los componentes del sistema usen esta marca, ya que se trata de un campo no admitido. Si se usa, se restringirá.

BLOCK_GPS_STATUS_USAGE

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, todo el uso de la API de GpsStatus debe reemplazarse con las API de GnssStatus.

BLOCK_IMMUTABLE_PENDING_INTENTS

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, los objetos PendingIntent inmutables que se pasan a la API de ubicación generarán una IllegalArgumentException.

BLOCK_PENDING_INTENT_SYSTEM_API_USAGE

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, las API del sistema LocationRequest no se pueden usar con solicitudes de ubicación PendingIntent.

BLOCK_UNTRUSTED_TOUCHES

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

Con el objetivo de preservar la seguridad del sistema y una buena experiencia del usuario, Android 12 evita que las apps consuman eventos táctiles, en los que una superposición bloquea la app de forma insegura.

Para obtener más información sobre este cambio, consulta Bloqueo de los eventos táctiles que no son de confianza.

CAMERA_MIC_INDICATORS_NOT_PRESENT

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

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

CHANGE_ID_AUTH_STATE_DENIED

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

En el caso de las apps cliente orientadas a Android 12 y versiones posteriores, se arroja una SecurityException cuando están en el estado de autorización denegado e intentan enviar un mensaje a una nanoapp.

CHANGE_ID_SAMPLING_RATE_SENSORS_PERMISSION

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, se arroja una SecurityException cuando no tienen el permiso HIGH_SAMPLING_RATE_SENSORS, se ejecutan en modo de depuración y solicitan tasas de muestreo superiores a 200 Hz.

DELIVER_HISTORICAL_LOCATIONS

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, es posible que los clientes de ubicación reciban ubicaciones históricas (anteriores a la fecha actual) en algunas circunstancias.

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. Inhabilitar este cambio evita que funcionen 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% están habilitados.

DOWNSCALE_50

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

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

DOWNSCALE_60

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

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

DOWNSCALE_70

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

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

DOWNSCALE_80

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

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

DOWNSCALE_90

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

Cuando el estado de DOWNSCALEDtambién es habilitado, habilitar este cambio para un paquete fuerza a la app a asumir que se está ejecutando en una pantalla con una resolución vertical y horizontal del 90% de la pantalla real.

DROP_CLOSE_SYSTEM_DIALOGS

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

Para mejorar el control del usuario cuando interactúa con apps y el sistema, la acción de intent ACTION_CLOSE_SYSTEM_DIALOGS deja de estar disponible a partir de Android 12.

Para obtener más información sobre este cambio, consulta Las apps no pueden cerrar los diálogos del sistema.

ENABLE_CHECKS_FOR_PRIVATE_FILES

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

Las apps que se orientan a Android 12 y versiones posteriores no pueden insertar ni actualizar archivos privados con proveedores de contenido multimedia.

ENABLE_DEFERRED_SCAN

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

Habilita esta opción a fin de diferir el análisis que se activa como parte de MediaProvider#update().

ENABLE_INCLUDE_ALL_VOLUMES

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

Habilita esta opción a fin de incluir filas de archivos de la base de datos de un volumen desactivado recientemente en MediaProvider#query.

ENABLE_RAW_MANAGE_EXTERNAL_STORAGE_ACCESS

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

Habilita esta opción a fin de permitir que las apps que tienen el permiso Manifest.permission.MANAGE_EXTERNAL_STORAGE soliciten acceso al almacenamiento externo sin procesar.

ID del cambio: 183372781
Estado predeterminado: Habilitado para apps que se orientan a Android 11 (nivel de API 30) o versiones posteriores.

Habilita esta opción a fin de permitir que las apps que tienen la función android.app.role#SYSTEM_GALLERY soliciten acceso al almacenamiento externo sin procesar.

ENFORCE_NATIVE_SHARED_LIBRARY_DEPENDENCIES

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

Las apps orientadas a Android 12 y versiones posteriores deben declarar dependencias a las bibliotecas compartidas nativas y públicas que define el fabricante del dispositivo con la etiqueta uses-native-library en su AndroidManifest.xml. Si alguna de las dependencias no se puede cumplir (por ejemplo, una de las dependencias no existe), el administrador de paquetes no instalará la app. La dependencia se puede especificar como opcional mediante el atributo android:required en la etiqueta y, en caso de no satisfacer la dependencia, no se detendrá la instalación.

Una vez instalada, se proporciona una app solo con las bibliotecas compartidas nativas especificadas en el manifiesto de la app. La llamada a dlopen en una biblioteca compartida nativa que no aparece en el manifiesto de la app fallará incluso si existe en el dispositivo.

ENFORCE_STRICT_QUERY_BUILDER

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, SQLiteQueryBuilder ahora verifica todas las selecciones de consultas de CalendarProvider2 con argumentos maliciosos.

FGS_BG_START_USE_EXEMPTION_LIST_CHANGE_ID

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

Si se configura como false para un paquete, el sistema no lo eximirá de FGS-BG-start, incluso si está en ActiveServices.sFgsBgStartExemptedPackages.

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 anulará 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. Configurar esta marca y FORCE_ENABLE_HEVC_SUPPORT es un estado indefinido y provocará que el SO ignore 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 anulará 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. Configurar esta marca y FORCE_DISABLE_HEVC_SUPPORT es un estado indefinido y provocará que el SO ignore ambas marcas.

FORCE_NON_RESIZE_APP

ID del cambio: 181136395
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.

HIDE_PROP_ICUBINARY_DATA_PATH

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, quita el acceso a la propiedad android.icu.impl.ICUBinary.dataPath.

IS_BACKUP_SERVICE_ACTIVE_ENFORCE_PERMISSION_IN_SERVICE

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, se aplica el permiso BACKUP necesario para el objeto isBackupServiceActive() del servicio y no del cliente en BackupManager.

KEYSTORE_OPERATION_CREATION_MAY_FAIL

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, la creación de la operación de almacén de claves puede fallar. Los almacenes de claves solían trabajar bajo la suposición de que la creación de operaciones criptográficas siempre se realizaba correctamente. Sin embargo, el backend de KeyMint solo tiene un número limitado de ranuras de operación.

Para mantener la apariencia de las ranuras de las operaciones "infinitas", el daemon del almacén de claves reducía las operaciones usadas recientemente si no había una ranura de operación disponible. Como resultado, las operaciones buenas se podían finalizar de forma prematura. Esto llevaba a AndroidKeystore a la denegación del servicio (DoS) y un bloqueo activo no intencional. Por ejemplo, si varias aplicaciones se activaban al mismo tiempo debido a optimizaciones de administración de energía e intentaban realizar operaciones criptográficas, comenzaban a finalizar las operaciones entre sí sin ningún progreso.

A fin de eliminar los bloqueos activos y desalentar los intentos de DoS, cambiamos la estrategia de reducción para que prefiera clientes que usen pocas ranuras de operación. Como resultado, las operaciones individuales que no resultan inactivas por más de 5 segundos casi siempre concluirán sin problemas gracias a la estrategia de reducción. Aún existen algunas operaciones relacionadas con la encriptación del sistema de archivos que pueden reducir incluso estas operaciones, pero son casos poco frecuentes. Como efecto secundario de esta nueva operación de estrategia de reducción, ahora la creación puede fallar si el cliente tiene una potencia de reducción menor que todas las operaciones existentes.

Estrategia de reducción: A fin de encontrar un candidato adecuado, calculamos el malus para el emisor y cada operación existente. El malus es la inversa de la potencia de reducción (emisor) o la resistencia a la reducción (operación existente). Para que el emisor pueda reducir una operación, debe buscar una operación con un malus superior al suyo. Para obtener más información sobre la estrategia de reducción, consulta la implementación de operation.rs. En Android 11 (nivel de API 30) y versiones anteriores, KeyStore2 consultará el daemon del almacén de claves para obtener un espacio de operación libre. En el caso de las apps orientadas a Android 11 (nivel de API 30) y versiones anteriores, seguirá pareciendo que la inicialización del objeto de firma y el algoritmo de cifrado siempre es exitosa; sin embargo, obtener una operación podría demorar más tiempo. Todas las versiones de Android se benefician de la programación de ranuras de operación más justas y una mejor oportunidad para finalizar una operación con éxito.

LOW_POWER_EXCEPTIONS

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, todos los objetos LocationRequest marcados como con potencia baja lanzan una excepción si el emisor no tiene el permiso LOCATION_HARDWARE, en lugar de descartar silenciosamente la parte de la solicitud que tiene potencia baja.

MISSING_EXPORTED_FLAG

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, se debe especificar un valor explícito para el atributo android:exported cada vez que se define un filtro de intents.

Si quieres obtener más información sobre este cambio, consulta Exportación de componentes más segura.

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: 135772972
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.

NEVER_SANDBOX_DISPLAY_APIS

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

Fuerza los paquetes a los que se aplica de modo que nunca se aplique la zona de pruebas de la API de Display en letterbox ni en una actividad de SCM. Las API de Display continuarán proporcionando los límites DisplayArea.

Si deseas obtener más información sobre este cambio, consulta Display#getRealSize y getRealMetrics: baja y zona de pruebas.

NOTIFICATION_CANCELLATION_REASONS

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

Permite que los objetos de escucha de notificaciones comprendan nuevos motivos de cancelación más específicos.

NOTIFICATION_TRAMPOLINE_BLOCK

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

Para mejorar el rendimiento y la UX de las apps, las aplicaciones orientadas a Android 12 no pueden usar servicios ni receptores de emisión como trampolines de notificación.

Si quieres obtener más información sobre este cambio, consulta No es posible crear trampolines de notificación desde servicios o receptores de emisión.

NULL_TELEPHONY_THROW_NO_CB

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

Se usa con el fin de comprobar si la versión del SDK de destino del proceso actual es Android 12 o una posterior.

Se aplica a los siguientes métodos:

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_LARGE

ID del cambio: 180326787
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 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.

PENDING_INTENT_EXPLICIT_MUTABILITY_REQUIRED

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, debes especificar la mutabilidad de cada objeto PendingIntent que crea tu app. Este requisito adicional mejora la seguridad de tu app.

Para obtener más información sobre este cambio, consulta Los intents pendientes deben declarar la mutabilidad.

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.

REQUIRE_EXACT_ALARM_PERMISSION

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, estas deberán tener el nuevo permiso Manifest.permission.SCHEDULE_EXACT_ALARM a fin de usar setExactAndAllowWhileIdle(int, long, PendingIntent) y setAlarmClock(AlarmClockInfo, PendingIntent).

SECURITY_EXCEPTION_ON_INVALID_ATTRIBUTION_TAG_CHANGE

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

En el caso de las apps orientadas a Android 12 y versiones posteriores, exige que todas las attributionTags enviadas a noteOp(String, int, String), noteProxyOp(String, String) y startOp(String, int, String) estén definidas en el manifiesto del paquete que se especifica como parámetro de los métodos.

A fin de habilitar este cambio, el paquete que llama a noteOp(String, int, String) y el paquete especificado como parámetro del método deben tener habilitado este cambio.

SELINUX_LATEST_CHANGES

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

En las apps orientadas a Android 12 y versiones posteriores, habilita los cambios más recientes de SELinux. Desactivar este cambio para una app orientada a Android 12 o una versión posterior es una no-op. No tiene efecto en apps que usan un ID de usuario compartido.

SELINUX_R_CHANGES

ID del cambio: 168782947
Estado predeterminado: Habilitado para apps que se orientan a Android 11 (nivel de API 30) o versiones posteriores.

Este cambio restringe el acceso de una app al dominio SELinux de untrusted_app_R-targetSDk. Este es uno de los cambios fundamentales del marco de compatibilidad, que permite que las apps activen o desactiven otros cambios restringidos por targetSdkVersion sin que se modifique la targetSDKVersion de las apps. Por este motivo, no debes inhabilitar este cambio para una app orientada a Android 11, ya que, si lo haces, no funcionará la app.

Este cambio no afecta a las apps que usan un ID de usuario compartido.

SETTINGS_API_V2

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

La API nueva de preferencias del usuario, que verifica dominios marcados como android:autoVerify="true" en los filtros de intents de AndroidManifest.xml, aún no se implementó en la vista previa actual de la plataforma. Por el momento, se puede obtener una vista previa de los nuevos cambios en las preferencias del usuario cuando se habilita este cambio mediante adb shell pm set-app-links-user-selection y comandos similares.

THROW_EXCEPTION_ON_REQUIRE_INSTALL_PACKAGES_TO_ADD_INSTALLER_PACKAGE

ID del cambio: 150857253
Estado predeterminado: Habilitado para apps que se orientan a Android 11 (nivel de API 30) o versiones posteriores.

En el caso de las apps orientadas a Android 11 (nivel de API 30) y versiones posteriores, agregar un nombre de paquete de instalación a un paquete que no lo tenga ahora requiere el permiso INSTALL_PACKAGES. Si el emisor se orienta a Android 11 (nivel de API 30), se genera una SecurityException. De lo contrario, la solicitud falla de forma silenciosa. En ambos casos, independientemente de si se habilita este cambio, el paquete del instalador no se modifica.