Modifiche del comportamento: tutte le app

La piattaforma Android 15 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 15, indipendentemente da targetSdkVersion. Devi testare l'app e poi modificarla in base alle esigenze per supportarla correttamente, ove applicabile.

Assicurati di esaminare anche l'elenco delle modifiche del comportamento che interessano solo le app che hanno come target Android 15.

Funzionalità di base

Android 15 modifica o espande varie funzionalità di base del sistema Android.

Modifiche allo stato del pacchetto arrestato

Lo stato del pacchetto FLAG_STOPPED (che gli utenti possono usare le build AOSP premendo a lungo l'icona di un'app e selezionando "Forza interruzione") è sempre stato quello di mantenere le app in questo stato finché l'utente non rimuove esplicitamente l'app da questo stato avviando direttamente l'app o interagendo indirettamente con l'app (tramite il foglio di condivisione o un widget, selezionandola come sfondo animato e così via). In Android 15, stiamo aggiornando il comportamento del sistema in modo che sia in linea con il comportamento previsto. Le app devono essere rimosse dallo stato arrestato solo tramite un'azione dell'utente diretta o indiretta.

Per supportare il comportamento previsto, oltre alle limitazioni esistenti, il sistema annullerà anche tutti gli intent in sospeso quando l'app entra nello stato di interruzione su Android 15. Quando le azioni dell'utente rimuovono l'app dallo stato Arresto, la trasmissione ACTION_BOOT_COMPLETED verrà inviata all'app offrendo l'opportunità di registrare di nuovo eventuali intent in sospeso.

Puoi chiamare il nuovo metodo ApplicationStartInfo.wasForceStopped() per verificare se lo stato dell'app è stato interrotto.

Supporto per dimensioni delle pagine da 16 kB

In passato, Android supportava solo dimensioni pagina di memoria di 4 kB, il che ottimizza le prestazioni della memoria di sistema per la quantità media di memoria totale solitamente occupata dai dispositivi Android. A partire da Android 15, Android supporta i dispositivi configurati per utilizzare una dimensione di pagina di 16 kB (dispositivi da 16 kB).

Poiché i produttori di dispositivi continuano a sviluppare dispositivi con quantità maggiori di memoria fisica (RAM), molti di questi dispositivi probabilmente verranno configurati con dimensioni delle pagine di 16 kB (fino a un massimo di) per ottimizzare le prestazioni del dispositivo. L'aggiunta del supporto per dispositivi da 16 kB consente di eseguire l'app su questi dispositivi e di trarre vantaggio dai miglioramenti delle prestazioni associati. Per aiutarti, ti forniamo indicazioni su come verificare se la tua app è interessata, come ricreare l'app (se applicabile) e come testare l'app in un ambiente di 16 kB utilizzando sia emulatori sia dispositivi fisici.

Vantaggi e aumenti del rendimento

I dispositivi configurati con dimensioni pagina di 16 kB utilizzano in media una quantità di memoria leggermente maggiore, ma ottengono anche diversi miglioramenti delle prestazioni sia per il sistema sia per le app:

  • Tempi di avvio delle app inferiori quando il sistema è sotto pressione: in media, il 3,16% è in meno, con miglioramenti più significativi (fino al 30%) per alcune app che abbiamo testato
  • Consumo energetico ridotto durante il lancio dell'app: in media una riduzione del 4,56%
  • Lancio più rapido delle fotocamere: in media avvii a caldo più rapidi del 4,48% e avvii a freddo in media del 6,60%
  • Miglioramento del tempo di avvio del sistema: miglioramento dell'1,5% (circa 0,8 secondi) in media

Questi miglioramenti si basano sui nostri test iniziali e i risultati sui dispositivi effettivi saranno probabilmente diversi. Forniremo ulteriori analisi dei potenziali guadagni per le app man mano che procediamo con i nostri test.

Controlla se la tua app è interessata

Se la tua app utilizza qualsiasi codice nativo, devi ricreare l'app supportando i dispositivi da 16 kB. Se non hai la certezza che la tua app utilizzi codice nativo, puoi utilizzare lo strumento di analisi APK per identificare la presenza di codice nativo.

Se la tua app utilizza solo codice scritto nel linguaggio di programmazione Java o in Kotlin, incluse tutte le librerie o tutti gli SDK, l'app supporta già i dispositivi da 16 kB. Tuttavia, ti consigliamo di testare la tua app in un ambiente da 16 kB per verificare che non ci siano regressioni impreviste nel comportamento dell'app.

Modifiche richieste per consentire ad alcune app di supportare lo spazio privato

Lo spazio privato è una nuova funzionalità di Android 15 che consente agli utenti di creare uno spazio separato sul proprio dispositivo in cui tenere le app sensibili lontano da occhi indiscreti, sotto un ulteriore livello di autenticazione. Poiché le app nello spazio privato hanno una visibilità limitata, alcuni tipi di app devono eseguire passaggi aggiuntivi per poter vedere e interagire con le app nello spazio privato di un utente.

Tutte le app

Poiché le app nello spazio privato vengono conservate in un profilo utente separato, come nei profili di lavoro, le app non devono presupporre che eventuali copie installate dell'app che non sono nel profilo principale siano nel profilo di lavoro. Se la tua app ha una logica correlata alle app del profilo di lavoro che fanno questo presupposto, dovrai modificare questa logica.

App Avvio app

Se sviluppi un'app Avvio app, devi eseguire le seguenti operazioni prima che le app nello spazio privato siano visibili:

  1. L'app deve essere assegnata come app Avvio app predefinita per il dispositivo, ovvero deve possedere il ruolo ROLE_HOME.
  2. L'app deve dichiarare l'autorizzazione normale ACCESS_HIDDEN_PROFILES nel file manifest dell'app.

Le app di avvio che dichiarano l'autorizzazione ACCESS_HIDDEN_PROFILES devono gestire i seguenti casi d'uso dello spazio privato:

  1. La tua app deve avere un contenitore Avvio app separato per le app installate nello spazio privato.
  2. L'utente deve essere in grado di nascondere e mostrare il contenitore dello spazio privato.
  3. L'utente deve essere in grado di bloccare e sbloccare il contenitore dello spazio privato.
  4. Quando è bloccato, nessuna app nel contenitore dello spazio privato deve essere visibile o rilevabile tramite meccanismi come la ricerca.

App dello store

Lo spazio privato include un pulsante "Installa app" che avvia un intento implicito di installare app nello spazio privato dell'utente. Affinché l'app riceva questo intent implicito, dichiara un elemento <intent-filter> nel file manifest dell'app con un valore <category> pari a CATEGORY_APP_MARKET.

Versione minima dell'SDK target aumentata da 23 a 24

Android 15 si basa sulle modifiche apportate in Android 14 ed estende ulteriormente questa sicurezza. In Android 15, non è possibile installare le app con targetSdkVersion inferiore a 24. Richiedere app che soddisfino livelli API moderni contribuisce a garantire maggiore sicurezza e privacy.

Il malware ha spesso come target livelli API più bassi per aggirare le protezioni di sicurezza e privacy introdotte nelle versioni successive di Android. Ad esempio, alcune app malware utilizzano un valore targetSdkVersion pari a 22 per evitare di essere soggette al modello di autorizzazione di runtime introdotto nel 2015 da Android 6.0 Marshmallow (livello API 23). Questa modifica ad Android 15 rende più difficile per il malware evitare miglioramenti della sicurezza e della privacy. Il tentativo di installare un'app che ha come target un livello API inferiore genera un errore di installazione e in Logcat viene visualizzato un messaggio simile al seguente:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Sui dispositivi che eseguono l'upgrade ad Android 15, rimangono installate tutte le app con un valore targetSdkVersion inferiore a 24.

Se devi testare un'app che ha come target un livello API precedente, utilizza il seguente comando ADB:

adb install --bypass-low-target-sdk-block FILENAME.apk

Fotocamera e contenuti multimediali

Android 15 apporta le seguenti modifiche al comportamento della fotocamera e dei contenuti multimediali per tutte le app.

Ora la riproduzione audio diretta e il download non può essere eseguito per rendere nulle le tracce audio in precedenza aperte o il download di tracce audio quando vengono raggiunti i limiti delle risorse

Prima di Android 15, se un'app richiedeva direttamente o scaricava la riproduzione audio mentre un'altra app stava riproducendo contenuti audio e venivano raggiunti i limiti delle risorse, l'app non apriva un nuovo AudioTrack.

A partire da Android 15, quando un'app richiede la riproduzione diretta o l'offload e vengono raggiunti i limiti delle risorse, il sistema annulla la validità di tutti gli oggetti AudioTrack attualmente aperti, che impediscono di soddisfare la nuova richiesta di canale.

(In genere, le tracce audio dirette e quelle sottocaricate vengono aperte per la riproduzione di formati audio compressi). I casi d'uso comuni per la riproduzione di audio diretto includono lo streaming di audio codificato tramite HDMI su una TV. L'offload delle tracce viene in genere utilizzato per riprodurre l'audio compresso su un dispositivo mobile con accelerazione DSP hardware.

Esperienza utente e UI di sistema

Android 15 include alcune modifiche volte a creare un'esperienza utente più coerente e intuitiva.

Animazioni predittive Indietro attivate per le app attivate

A partire da Android 15, l'opzione per sviluppatori relativa alle animazioni d'indietro predittive è stata rimossa. Le animazioni di sistema, come ritorno a casa, cross-task e attività incrociata, ora vengono visualizzate per le app per cui è stato attivato il gesto Indietro predittivo completamente o a livello di attività. Se la tua app è interessata, esegui le seguenti operazioni:

  • Assicurati che la migrazione dell'app sia stata eseguita correttamente per utilizzare il backgesture predittivo.
  • Assicurati che le transizioni di frammento funzionino con la navigazione a ritroso predittiva.
  • Elimina le transizioni di animazione e framework e usa invece le transizioni di animator e Androidx.
  • Esegui la migrazione da stack secondari di cui FragmentManager non è a conoscenza. Utilizza invece stack back gestiti da FragmentManager o dal componente di navigazione.

Deprecazioni

A ogni release, specifiche API Android potrebbero diventare obsolete o dover essere sottoposte a refactoring per fornire una migliore esperienza per gli sviluppatori o supportare nuove funzionalità della piattaforma. In questi casi, ritiriamo ufficialmente le API obsolete e indirizziamo gli sviluppatori ad API alternative da utilizzare.

Il ritiro significa che abbiamo terminato il supporto ufficiale per le API, che però continueranno a essere disponibili per gli sviluppatori. Per scoprire di più sulle deprecazioni di rilievo in questa release di Android, consulta la pagina relativa ai ritiri.