Modifiche del comportamento: tutte le app

La piattaforma Android 11 include modifiche del comportamento che potrebbero influire sulla tua app. Le seguenti modifiche del comportamento si applicano a tutte le app quando vengono eseguite su Android 11, indipendentemente da targetSdkVersion. Ti consigliamo di testare l'app e di modificarla in base alle esigenze per supportarle correttamente, ove applicabile.

Assicurati di esaminare anche l'elenco delle modifiche del comportamento che interessano solo le app destinate ad Android 11.

Privacy

Android 11 introduce modifiche e limitazioni per migliorare la privacy degli utenti, tra cui:

  • Autorizzazioni una tantum: offre agli utenti la possibilità di concedere un accesso più temporaneo alle autorizzazioni per posizione, microfono e fotocamera.
  • Visibilità delle finestre di dialogo delle autorizzazioni: i rifiuti ripetuti di un'autorizzazione implicano l'opzione "Non chiedermelo più".
  • Controllo dell'accesso ai dati: ottieni insight su dove la tua app accede ai dati privati, sia nel codice della tua app sia nel codice delle librerie dipendenti.
  • Autorizzazioni per la finestra di avviso di sistema: a determinate classi di app viene concessa automaticamente l'autorizzazione SYSTEM_ALERT_WINDOW su richiesta. Inoltre, gli intent che includono l'azione ACTION_MANAGE_OVERLAY_PERMISSION indirizzano sempre gli utenti a una schermata nelle impostazioni di sistema.
  • Identificatori SIM permanenti: su Android 11 e versioni successive, l'accesso agli ICCID non reimpostabili tramite il metodo getIccId() è limitato. Il metodo restituisce una stringa vuota con valore non null. Per identificare in modo univoco una SIM installata sul dispositivo, utilizza il metodo getSubscriptionId(). L'ID abbonamento fornisce un valore di indice (a partire da 1) per identificare in modo univoco le SIM installate, incluse quelle fisiche ed elettroniche. Il valore di questo identificatore è stabile per una determinata SIM, a meno che non vengano ripristinati i dati di fabbrica del dispositivo.

Per ulteriori informazioni, visita la pagina Privacy.

Notifiche di esposizione

Android 11 aggiorna la piattaforma tenendo presente il sistema Notifiche di esposizione. Ora gli utenti possono eseguire le app Notifiche di esposizione su Android 11 senza dover attivare l'impostazione di geolocalizzazione del dispositivo. Si tratta di un'eccezione solo per il sistema Notifiche di esposizione, in quanto è stato progettato in modo tale che le app che lo utilizzano non possano dedurre la posizione del dispositivo tramite la scansione Bluetooth.

Per proteggere la privacy degli utenti, a tutte le altre app è comunque vietato eseguire la scansione dei dispositivi Bluetooth, a meno che l'impostazione di geolocalizzazione del dispositivo non sia attiva e l'utente non abbia concesso all'utente l'autorizzazione di accesso alla posizione. Scopri di più nel nostro post Aggiornamento sulle notifiche di esposizione.

Sicurezza

I socket SSL utilizzano il motore Conscrypt SSL per impostazione predefinita

L'implementazione predefinita di SSLSocket di Android si basa su Conscrypt. A partire da Android 11, questa implementazione è basata internamente su SSLEngine di Conscrypt.

Allocatore con protezione scudo

Android 11 utilizza internamente l'allocator protetto di Scudo per gestire le allocazioni dell'heap. Scudo è in grado di rilevare e attenuare alcuni tipi di violazioni della sicurezza della memoria. Se noti arresti anomali correlati a Scudo (ad esempio Scudo ERROR:) nei report sugli arresti anomali nativi, consulta la documentazione sulla risoluzione dei problemi con Scudo.

Statistiche sull'utilizzo delle app

Per proteggere meglio gli utenti, Android 11 archivia le statistiche sull'utilizzo delle app di ciascun utente nello spazio di archiviazione criptato con credenziali. Di conseguenza, né il sistema né le app possono accedere ai dati, a meno che isUserUnlocked() non restituisca true, a meno che non si verifichi una delle seguenti situazioni:

  • L'utente sblocca il dispositivo per la prima volta dopo un avvio del sistema.
  • L'utente passa al proprio account sul dispositivo.

Se la tua app si associa già a un'istanza di UsageStatsManager, controlla di chiamare i metodi su questo oggetto dopo che l'utente ha sbloccato il dispositivo. In caso contrario, l'API ora restituisce valori nulli o vuoti.

Supporto di emulatore per 5G

Android 11 aggiunge API 5G per consentire alle tue app di aggiungere funzionalità all'avanguardia. Per testare le funzionalità man mano che le aggiungi, puoi usare le nuove funzionalità dell'emulatore di SDK Android. La nuova funzionalità è stata aggiunta nella versione 30.0.22 dell'emulatore. Se selezioni l'impostazione della rete 5G, TelephonyDisplayInfo viene impostato su OVERRIDE_NETWORK_TYPE_NR_NSA, viene modificata la larghezza di banda stimata e puoi impostare la misurazione per verificare che la tua app risponda correttamente alle modifiche dello stato di NET_CAPABILITY_TEMPORARILY_NOT_METERED.

Prestazioni e debug

Debug dei limiti delle chiamate all'API JobScheduler

Android 11 offre supporto per il debug delle app al fine di identificare le potenziali chiamate all'API JobScheduler che hanno superato determinati limiti di frequenza. Gli sviluppatori possono utilizzare questa struttura per identificare potenziali problemi di prestazioni. Per le app con l'attributo manifest debuggable impostato su true, le chiamate API JobScheduler che superano i limiti di frequenza restituiranno RESULT_FAILURE. I limiti sono impostati in modo da non influire sui casi d'uso legittimi.

Descrittore di file sanitizer (fdsan)

Android 10 ha introdotto fdsan (file descrittore sanitizer). fdsan rileva la gestione errata della proprietà del descrittore del file, ad esempio utilizzo dopo la chiusura e doppia chiusura. La modalità predefinita di fdsan cambierà in Android 11. fdsan ora interrompe quando viene rilevato un errore; il comportamento precedente prevedeva la registrazione di un avviso e la continuazione. Se vengono rilevati arresti anomali a causa di fdsan nella tua applicazione, consulta la fdsan documentation.

Limitazioni dell'interfaccia non SDK

Android 11 include elenchi aggiornati di interfacce non SDK limitate in base alla collaborazione con gli sviluppatori Android e agli ultimi test interni. Quando possibile, ci assicuriamo che siano disponibili alternative pubbliche prima di limitare le interfacce non SDK.

Se la tua app non ha come target Android 11, alcune di queste modifiche potrebbero non interessarti immediatamente. Tuttavia, anche se al momento puoi utilizzare alcune interfacce non SDK (a seconda del livello API target della tua app), l'utilizzo di metodi o campi non SDK comporta sempre un rischio elevato di danneggiare la tua app.

Se non hai la certezza che la tua app utilizzi interfacce non SDK, puoi testare l'app per scoprirlo. Se la tua app si basa su interfacce non SDK, devi iniziare a pianificare una migrazione alle alternative SDK. Ciononostante, siamo consapevoli che alcune app hanno casi d'uso validi per l'utilizzo di interfacce non SDK. Se non riesci a trovare un'alternativa all'utilizzo di un'interfaccia non SDK per una funzionalità nella tua app, devi richiedere una nuova API pubblica.

Per scoprire di più sulle modifiche in questa release di Android, consulta Aggiornamenti alle limitazioni relative alle interfacce non SDK in Android 11. Per scoprire di più sulle interfacce non SDK in generale, consulta Restrizioni sulle interfacce non SDK.

Libreria condivisa di Maps v1 rimossa

La versione 1 della Libreria condivisa di Maps è stata completamente rimossa in Android 11. Questa libreria è stata deprecata e non funziona più per le app in Android 10. Le app che in precedenza utilizzavano questa libreria condivisa per dispositivi con Android 9 (livello API 28) o versioni precedenti dovrebbero usare Maps SDK for Android.

Interazione con altre app

Condividi URI contenuti

Se la tua app condivide un URI di contenuti con un'altra app, l'intent deve concedere le autorizzazioni di accesso all'URI impostando almeno uno dei seguenti flag di intent: FLAG_GRANT_READ_URI_PERMISSION e FLAG_GRANT_WRITE_URI_PERMISSION. In questo modo, se l'altra app ha come target Android 11, può comunque accedere all'URI dei contenuti. La tua app deve includere i flag per intent anche quando l'URI dei contenuti è associato a un fornitore di contenuti non di proprietà della tua app.

Se il fornitore di contenuti associato all'URI dei contenuti è di proprietà della tua app, verifica che il fornitore di contenuti non sia esportato. Consigliamo già questa best practice per la sicurezza.

Caricamento della raccolta in corso...

Caricamento della libreria comune ICU con percorso assoluto in corso...

Le app che hanno come target l'API 28 e versioni precedenti non possono utilizzare dlopen(3) per caricare libicuuc con il percorso assoluto "/system/lib/libicuuc.so". Per queste app, dlopen("/system/lib/libicuuc.so", ...) restituirà un handle nullo.

Per caricare la libreria, utilizza invece il nome della libreria come nome file, ad esempio dlopen("libicuuc.so", ...).