Modifiche al framework di compatibilità (Android 16)

Figura 1. La schermata Modifiche di compatibilità delle app nelle opzioni per sviluppatori elenca le modifiche che puoi attivare/disattivare.

Questa pagina descrive le modifiche attivabili/disattivabili che fanno parte del framework di compatibilità in Android 16 (livello API 36). Utilizza questo elenco insieme alle opzioni sviluppatore e ai comandi ADB per testare ed eseguire il debug della tua app mentre ti prepari a supportare e scegliere come target Android 16.

Ecco alcune delle cose che puoi fare utilizzando gli strumenti del framework di compatibilità:

  • Testa le modifiche mirate senza modificare effettivamente la targetSdkVersion dell'app. Puoi utilizzare i pulsanti di attivazione/disattivazione per forzare l'attivazione di modifiche specifiche al comportamento mirato per valutare l'impatto sulla tua app esistente.
  • Concentrati sui test solo su modifiche specifiche. Anziché dover affrontare tutte le modifiche mirate contemporaneamente, i pulsanti di attivazione/disattivazione ti consentono di disattivare tutte le modifiche mirate, tranne quelle che vuoi testare.
  • Gestire i pulsanti di attivazione/disattivazione tramite adb. Puoi utilizzare i comandi adb per attivare e disattivare le modifiche attivabili nell'ambiente di test automatizzato.
  • Esegui il debug più velocemente utilizzando gli ID modifica standard. Ogni modifica attivabile ha un ID e un nome univoci che puoi utilizzare per eseguire rapidamente il debug della causa principale nell'output del log.

Per informazioni dettagliate sull'utilizzo degli strumenti per ciascuno di questi casi d'uso, vedi Strumenti del framework di compatibilità.

Modifiche al comportamento incluse nel framework di compatibilità

L'elenco in questa sezione descrive le modifiche attivabili/disattivabili incluse nel framework di compatibilità per le modifiche relative ad Android 16 e le modifiche attivabili/disattivabili che possono essere utili per i test generali delle app.

Puoi filtrare l'elenco delle modifiche in base al relativo stato predefinito.

Modifiche attivabili/disattivabili nel framework di compatibilità in Android 16

CAMERA_MIC_INDICATORS_NOT_PRESENT

Modifica ID: 162547999
Stato predefinito: disattivato per tutte le app.

Indica che questo dispositivo supporta gli indicatori di fotocamera e microfono. Il valore è false se presente, perché il metodo CompatChanges#isChangeEnabled restituisce true se l'ID modifica non è presente.

DOWNSCALED

ID modifica:168419799
Stato predefinito: disattivato per tutte le app.

Questa modifica è il gatekeeper di tutte le modifiche al ridimensionamento del buffer per app. L'attivazione di questa modifica consente di applicare i seguenti fattori di scalabilità:

Quando questa modifica è attivata per un pacchetto app, l'app viene ridimensionata forzatamente al fattore di scalabilità più elevato e abilitato. Ad esempio, viene utilizzato l'80% se sono attivati sia l'80% che il 70% (DOWNSCALE_80 e DOWNSCALE_70). Quando sono attive sia questa modifica che DOWNSCALED_INVERSE, DOWNSCALED_INVERSE ha la precedenza e il fattore di scalabilità viene applicato inversamente.

DOWNSCALED_INVERSE

ID modifica:273564678
Stato predefinito: disattivato per tutte le app.

Questa modifica è il gatekeeper di tutte le modifiche di riduzione inversa del buffer per app. L'attivazione di questa modifica consente di applicare inversamente i seguenti fattori di scalabilità (ovvero la risoluzione viene aumentata):

Quando questa modifica viene attivata per un pacchetto app, le dimensioni dell'app vengono forzatamente ridimensionate al fattore di scalabilità più basso e abilitato. Ad esempio, viene utilizzato l'80% se sono attivi sia l'80% che il 70% (DOWNSCALE_80 e DOWNSCALE_70) perché, se applicato inversamente, un fattore di scalabilità dell'80% equivale al 125%, che è inferiore al 142,86% di scalabilità applicato inversamente a un fattore di scalabilità del 70%. Quando sono attive sia questa modifica che DOWNSCALED, DOWNSCALED_INVERSE ha la precedenza e il fattore di scalabilità viene applicato inversamente.

DOWNSCALE_30

ID modifica:189970040
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 30% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app ad assumere che sia in esecuzione su un display con il 333,33% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_35

ID modifica:189969749
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 35% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a presupporre che sia in esecuzione su un display con il 285,71% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_40

ID modifica:189970038
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 40% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app ad assumere che sia in esecuzione su un display con il 250% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_45

ID modifica:189969782
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 45% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a presupporre che sia in esecuzione su un display con il 222,22% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_50

ID modifica:176926741
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 50% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a presupporre che sia in esecuzione su un display con il 200% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_55

ID modifica:189970036
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 55% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app ad assumere che sia in esecuzione su un display con il 181,82% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_60

ID modifica:176926771
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 60% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a supporre di essere in esecuzione su un display con il 166,67% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_65

ID modifica:189969744
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 65% della risoluzione verticale e orizzontale del display reale. Se è attivata anche l'impostazione DOWNSCALED_INVERSE, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre che sia in esecuzione su un display con il 153,85% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_70

ID modifica:176926829
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 70% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a presupporre che sia in esecuzione su un display con il 142,86% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_75

ID modifica:189969779
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 75% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'abilitazione di questa modifica per un pacchetto forza l'app ad assumere che sia in esecuzione su un display con il 133,33% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_80

ID modifica:176926753
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con l'80% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app ad assumere che sia in esecuzione su un display con il 125% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_85

ID modifica:189969734
Stato predefinito: disabilitato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con l'85% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre che sia in esecuzione su un display con il 117,65% della risoluzione verticale e orizzontale del display reale.

DOWNSCALE_90

ID modifica:182811243
Stato predefinito: disattivato per tutte le app.

Se è attivata anche l'opzione DOWNSCALED, l'attivazione di questa modifica per un pacchetto costringe l'app a presupporre di essere in esecuzione su un display con il 90% della risoluzione verticale e orizzontale del display reale. Se DOWNSCALED_INVERSE è attivato, l'attivazione di questa modifica per un pacchetto forza l'app a supporre di essere in esecuzione su un display con l'111,11% della risoluzione verticale e orizzontale del display reale.

ENFORCE_STRICT_QUERY_BUILDER

ID modifica: 143231523
Stato predefinito: disattivato per tutte le app.

Se attivata, l'opzione SQLiteQueryBuilder verifica tutte le selezioni di query CalendarProvider2 rispetto agli argomenti dannosi.

FORCE_DISABLE_HEVC_SUPPORT

ID modifica:174227820
Stato predefinito: disabilitato per tutte le app.

Forza la disattivazione del supporto della funzionalità multimediale HEVC per un'app. Le app devono dichiarare le funzionalità multimediali supportate nel manifest, ma questo flag può essere utilizzato per forzare un'app a non supportare HEVC, forzando quindi la transcodifica durante l'accesso ai contenuti multimediali codificati in HEVC. L'impostazione di questo flag sostituisce tutti i valori predefiniti a livello di sistema operativo per le app. È disattivato per impostazione predefinita, il che significa che le impostazioni predefinite del sistema operativo hanno la precedenza. Se sono attivi sia questo flag sia FORCE_ENABLE_HEVC_SUPPORT, il sistema operativo ignora entrambi i flag.

FORCE_ENABLE_HEVC_SUPPORT

ID modifica: 174228127
Stato predefinito: disabilitato per tutte le app.

Forza l'attivazione di un'app per supportare la funzionalità multimediale HEVC. Le app devono dichiarare le funzionalità multimediali supportate nel proprio manifest, ma questo flag può essere utilizzato per forzare un'app a supportare HEVC, evitando così la transcodifica durante l'accesso ai contenuti multimediali codificati in HEVC. L'impostazione di questo flag sostituisce tutti i valori predefiniti a livello di sistema operativo per le app. È disattivato per impostazione predefinita, il che significa che le impostazioni predefinite del sistema operativo avranno la precedenza. Se sono attivi sia questo flag sia FORCE_DISABLE_HEVC_SUPPORT, il sistema operativo ignora entrambi i flag.

FORCE_NON_RESIZE_APP

ID modifica: 181146395
Stato predefinito: disattivato per tutte le app.

Forza i pacchetti a cui viene applicato a non essere ridimensionabili.

FORCE_RESIZE_APP

ID modifica: 174042936
Stato predefinito: disattivato per tutte le app.

Forza il ridimensionamento dei pacchetti a cui viene applicato. Consentiamo il ridimensionamento solo in modalità finestra a schermo intero, ma non forziamo l'app in modalità multi-finestra ridimensionabile.

GWP_ASAN

ID modifica:145634846
Stato predefinito: disattivato per tutte le app.

Consente il rilevamento di bug di memoria nativa campionata nelle app.

Per scoprire di più sull'utilizzo di GWP-ASan, consulta la guida GWP-ASan.

NATIVE_HEAP_ZERO_INIT

ID modifica:178038272
Stato predefinito: disattivato per tutte le app.

Attiva l'inizializzazione automatica a zero delle allocazioni di memoria heap nativa.

NATIVE_MEMTAG_ASYNC

ID modifica:145772972
Stato predefinito: disabilitato per tutte le app.

Abilita il controllo dei tag di memoria asincroni (ASYNC) in questo processo. Questo flag influisce solo sull'hardware che supporta l'estensione Memory Tagging Extension (MTE) di ARM.

NATIVE_MEMTAG_SYNC

ID modifica:177438394
Stato predefinito: disabilitato per tutte le app.

Attiva il controllo sincrono (SYNC) dei tag di memoria in questo processo. Questo flag influisce solo sull'hardware che supporta l'estensione Memory Tagging Extension (MTE) di ARM. Se sono attive sia l'opzione NATIVE_MEMTAG_ASYNC sia questa, quest'ultima ha la precedenza e MTE viene attivato in modalità SYNC.

OVERRIDE_ANY_ORIENTATION

ID modifica:265464455
Stato predefinito: disabilitato per tutte le app.

Se attivata, questa modifica consente di applicare i seguenti override dell'orientamento indipendentemente dall'orientamento richiesto dall'attività:

OVERRIDE_ANY_ORIENTATION_TO_USER

ID modifica:310816437
Stato predefinito: disattivato per tutte le app.

Se attivata, abilita SCREEN_ORIENTATION_USER, che sostituisce qualsiasi orientamento richiesto dall'attività. Le app con orientamento fisso possono essere visualizzate a schermo intero sui dispositivi con schermi di grandi dimensioni con ignoreOrientationRequest abilitato con questo override.

OVERRIDE_CAMERA_COMPAT_DISABLE_FREEFORM_WINDOWING_TREATMENT

ID modifica:314961188
Stato predefinito: disattivato per tutte le app.

Se attivata, esclude i pacchetti a cui viene applicata la sostituzione dal trattamento di compatibilità della fotocamera in modalità finestra in formato libero per le app a orientamento fisso.

Nella modalità di ridimensionamento libero delle finestre, il trattamento di compatibilità emula l'esecuzione su un dispositivo verticale inserendo barre nere nella finestra dell'app e modificando le caratteristiche della fotocamera in base a ciò che le app si aspettano comunemente in un dispositivo verticale: rotazione del sensore di 90 e 270 gradi per le fotocamere posteriore e anteriore, rispettivamente, e impostazione della rotazione del display su 0.

Utilizza questo flag per disattivare il trattamento di compatibilità per le app che non rispondono bene al trattamento.

OVERRIDE_CAMERA_RESIZABLE_AND_SDK_CHECK

ID modifica:191514214
Stato predefinito: disattivato per tutte le app.

Se abilitata, questa modifica impone ai pacchetti a cui viene applicata di ignorare il valore corrente di android:resizeableActivity e l'SDK di destinazione uguale o inferiore ad Android 6.0 (livello API 23) e di considerare l'attività come non ridimensionabile. In questo caso, il valore di rotazione e ritaglio della videocamera dipende solo dalla compensazione necessaria in base alla rotazione attuale del display.

OVERRIDE_CAMERA_ROTATE_AND_CROP_DEFAULTS

ID modifica:189229956
Stato predefinito: disattivato per tutte le app.

Se attivata, questa modifica forza i pacchetti a cui viene applicata a eseguire l'override del comportamento predefinito di rotazione e ritaglio della videocamera e a restituire sempre CaptureRequest.SCALER_ROTATE_AND_CROP_NONE.

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

ID modifica:316897322
Stato predefinito: disattivato per tutte le app.

Se attivata, garantisce che agli utenti venga presentata la possibilità di acquisire una singola app o l'intero schermo quando avviano una sessione MediaProjection, ignorando l'utilizzo di MediaProjectionConfig#createConfigForDefaultDisplay.

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

ID modifica: 266124927
Stato predefinito: disattivato per tutte le app.

Attiva SCREEN_ORIENTATION_REVERSE_LANDSCAPE per l'app a cui viene applicato. A meno che non sia attivata anche l'opzione OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_REVERSE_LANDSCAPE viene utilizzato solo quando l'attività specifica l'orientamento orizzontale. L'attivazione di questa modifica può aiutarti a testare il comportamento dell'app per rilevare le differenze tra i dispositivi in cui l'orientamento orizzontale corrisponde a Surface.ROTATION_90 e i dispositivi in cui corrisponde a Surface.ROTATION_270.

OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE

ID modifica: 332679525
Stato predefinito: disattivato per tutte le app.

Se attivato, sostituisce il layout nel comportamento della modalità ritaglio display. Questa impostazione verrà applicata solo se non è forzato il formato edge-to-edge.

OVERRIDE_MIN_ASPECT_RATIO

ID modifica: 174042980
Stato predefinito: disattivato per tutte le app.

Questa modifica è il gatekeeper di tutte le modifiche che impongono un determinato formato minimo. L'attivazione di questa modifica consente di applicare i seguenti formati minimi:

Quando questa modifica viene attivata per un pacchetto app, le proporzioni minime indicate nel file manifest dell'app vengono sostituite con le proporzioni massime attivate, a meno che il valore del file manifest dell'app non sia superiore.

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

ID modifica: 218959984
Stato predefinito: disattivato per tutte le app.

Se abilitata, esegue l'override della limitazione delle proporzioni minime nella modalità a schermo intero verticale per utilizzare tutto lo spazio disponibile sullo schermo.

OVERRIDE_MIN_ASPECT_RATIO_LARGE

ID modifica: 180326787
Stato predefinito: disabilitato per tutte le app.

Quando OVERRIDE_MIN_ASPECT_RATIO è abilitato, l'attivazione di questa modifica per un pacchetto imposta le proporzioni minime dell'attività su un valore elevato, come definito da OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

ID modifica: 180326845
Stato predefinito: disabilitato per tutte le app.

Quando OVERRIDE_MIN_ASPECT_RATIO è abilitato, l'attivazione di questa modifica per un pacchetto imposta le proporzioni minime dell'attività su un valore medio definito da OVERRIDE_MIN_ASPECT_RATIO_MEDIUM_VALUE.

OVERRIDE_MIN_ASPECT_RATIO_ONLY_FOR_CAMERA

ID modifica: 325586858
Stato predefinito: disattivato per tutte le app.

Se attivata, limita i trattamenti che forzano l'applicazione di un determinato rapporto di aspetto minimo in modo che vengano applicati solo quando un'app è connessa alla videocamera.

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

ID modifica: 203647190
Stato predefinito: attivato per tutte le app.

Se OVERRIDE_MIN_ASPECT_RATIO è attivata, questa modifica limita qualsiasi altra modifica che imponga un rapporto di aspetto minimo dell'attività a un determinato valore, ad esempio OVERRIDE_MIN_ASPECT_RATIO_LARGE e OVERRIDE_MIN_ASPECT_RATIO_MEDIUM, alle attività che hanno anche un orientamento verticale.

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

ID modifica:236283604
Stato predefinito: disattivato per tutte le app.

Se attivata, questa modifica esclude i pacchetti applicati dalle limitazioni di orientamento che i produttori di dispositivi possono impostare.

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

ID modifica:265451093
Stato predefinito: disattivato per tutte le app.

Attiva SCREEN_ORIENTATION_NOSENSOR per l'app a cui viene applicato. A meno che non sia attivata anche OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_NOSENSOR viene utilizzato solo quando l'attività non specifica un altro orientamento fisso.

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

ID modifica: 265452344
Stato predefinito: disabilitato per tutte le app.

Attiva SCREEN_ORIENTATION_PORTRAIT per l'app a cui viene applicato. A meno che non sia attivata anche OVERRIDE_ANY_ORIENTATION, SCREEN_ORIENTATION_PORTRAIT viene utilizzato solo quando l'attività non specifica un altro orientamento fisso.

RATE_LIMIT_TOASTS

ID modifica:174840628
Stato predefinito: questa modifica non può essere attivata/disattivata. Viene registrato solo dal framework di compatibilità.

Consente la limitazione della frequenza del numero di chiamate Toast.show() per evitare di sovraccaricare l'utente con troppe notifiche toast in un tempo limitato. Qualsiasi tentativo di mostrare più toast del consentito in un determinato periodo di tempo comporta l'eliminazione del toast.

STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS

ID modifica: 288912692
Stato predefinito: attivato per le app che hanno come target Android 16 (livello API 36) o versioni successive.

Se abilitata, al massimo un'esecuzione mancata di scheduleAtFixedRate viene eseguita immediatamente quando un'app torna a un ciclo di vita valido.

Per saperne di più su questa modifica, consulta la sezione della pagina Modifiche al comportamento di Android 16 relativa all' ottimizzazione della pianificazione del lavoro a tariffa fissa.

UNIVERSAL_RESIZABLE_BY_DEFAULT

ID modifica: 357141415
Stato predefinito: attivato per le app che hanno come target Android 16 (livello API 36) o versioni successive.

Se attivato, i vincoli di orientamento, ridimensionamento e proporzioni delle app vengono ignorati sugli schermi grandi (schermi con larghezza superiore a 600 dp).

Per saperne di più su questa modifica, consulta la sezione relativa ai layout adattivi nella pagina Modifiche al comportamento di Android 16.

USE_EXPERIMENTAL_COMPONENT_ALIAS

ID modifica: 196254758
Stato predefinito: disattivato per tutte le app.

Se attivato, il sistema consente al pacchetto "android" di utilizzare gli alias dei componenti.