Come le release precedenti, Android 17 include modifiche al comportamento che potrebbero influire sulla tua app. Le seguenti modifiche al comportamento si applicano esclusivamente alle app che hanno come target Android 17 o versioni successive. Se la tua app ha come target Android 17 o versioni successive, devi modificarla per supportare questi comportamenti, ove applicabile.
Assicurati di esaminare anche l'elenco delle modifiche al comportamento che interessano tutte le app
in esecuzione su Android 17, indipendentemente dal targetSdkVersion della tua app.
Funzionalità di base
Android 17 include le seguenti modifiche che modificano o espandono varie funzionalità di base del sistema Android.
Nuova implementazione senza blocchi di MessageQueue
A partire da Android 17, le app che hanno come target Android 17
o versioni successive ricevono una nuova implementazione senza blocchi di
android.os.MessageQueue. La nuova implementazione migliora il rendimento e
riduce i frame mancanti, ma potrebbe interrompere i client che riflettono su campi e metodi privati di MessageQueue.
Per ulteriori informazioni, incluse le strategie di mitigazione, consulta la guida al cambiamento del comportamento di MessageQueue.
Accessibilità
Android 17 apporta le seguenti modifiche per migliorare l'accessibilità.
Supporto dell'accessibilità per la digitazione con tastiera fisica IME complessa
Questa funzionalità introduce nuove API AccessibilityEvent e TextAttribute
per migliorare il feedback vocale dello screen reader per l'input di lingue CJKV. Le app CJKV IME
ora possono segnalare se è stata selezionata una conversione di testo candidata durante
la composizione del testo. Le app con campi di modifica possono specificare i tipi di modifica del testo quando
inviano eventi di accessibilità relativi alla modifica del testo.
Ad esempio, le app possono specificare che una modifica del testo si è verificata durante la composizione del testo o che è il risultato di un commit.
In questo modo, i servizi di accessibilità
come gli screen reader possono fornire un feedback più preciso in base alla
natura della modifica del testo.
Adozione di app
App IME:quando imposti la composizione del testo nei campi di modifica, gli IME possono utilizzare
TextAttribute.Builder.setTextSuggestionSelected()per indicare se è stato selezionato un candidato alla conversione specifico.App con Modifica campi:le app che gestiscono un
InputConnectionpersonalizzato possono recuperare i dati di selezione dei candidati chiamandoTextAttribute.isTextSuggestionSelected(). Queste app devono quindi chiamareAccessibilityEvent.setTextChangeTypes()durante l'invio degli eventiTYPE_VIEW_TEXT_CHANGED. Le app che hanno come target Android 17 e che utilizzanoTextViewstandard avranno questa funzionalità attiva per impostazione predefinita. ovveroTextViewgestirà il recupero dei dati dall'IME e l'impostazione dei tipi di modifica del testo durante l'invio di eventi ai servizi di accessibilità.Servizi di accessibilità:i servizi di accessibilità che elaborano eventi
TYPE_VIEW_TEXT_CHANGEDpossono chiamareAccessibilityEvent.getTextChangeTypes()per identificare la natura della modifica e adeguare di conseguenza le proprie strategie di feedback.
Sicurezza
Android 17 apporta i seguenti miglioramenti alla sicurezza di dispositivi e app.
Sicurezza attività
In Android 17, la piattaforma continua il suo passaggio a un'architettura "sicura per impostazione predefinita", introducendo una serie di miglioramenti progettati per mitigare gli exploit di gravità elevata come phishing, hijacking dell'interazione e attacchi di tipo confused deputy. Questo aggiornamento richiede agli sviluppatori di attivare esplicitamente i nuovi standard di sicurezza per mantenere la compatibilità dell'app e la protezione degli utenti.
I principali impatti per gli sviluppatori includono:
- Rafforzamento di BAL e miglioramento dell'attivazione: stiamo perfezionando le limitazioni di Avvio attività in background (BAL) estendendo le protezioni a
IntentSender. Gli sviluppatori devono eseguire la migrazione dalla costante legacyMODE_BACKGROUND_ACTIVITY_START_ALLOWED. Devi invece adottare controlli granulari comeMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, che limita l'avvio dell'attività agli scenari in cui l'app chiamante è visibile, riducendo in modo significativo la superficie di attacco. - Strumenti di adozione:gli sviluppatori devono utilizzare la modalità Strict e i controlli lint aggiornati per identificare i pattern legacy e garantire la conformità ai futuri requisiti dell'SDK di destinazione.
Protezioni localhost
Per migliorare la sicurezza della piattaforma e la privacy degli utenti, Android 17
introduce una nuova autorizzazione in fase di installazione, USE_LOOPBACK_INTERFACE. Questa modifica
limita la comunicazione tra app e profili tramite l'interfaccia di loopback
(ad esempio, 127.0.0.1 o ::1), che in precedenza era consentita implicitamente
con l'autorizzazione INTERNET. Per le app destinate ad Android 17 o versioni successive, si applicano le seguenti regole:
- Consenso reciproco richiesto: la comunicazione tra app e profili
ora è bloccata per impostazione predefinita. Affinché una connessione vada a buon fine, sia l'app di invio
sia l'app di ricezione devono dichiarare esplicitamente l'autorizzazione
USE_LOOPBACK_INTERFACEnei rispettivi manifest. - Traffico intra-app esente: la comunicazione di loopback all'interno della stessa app (comunicazione intra-app) rimane invariata e non richiede questa nuova autorizzazione.
- Comportamento dell'SDK target:
- L'app ha come target Android 17 o versioni successive: l'autorizzazione
deve essere richiesta esplicitamente. Se manca, le operazioni socket (ad esempio
connessione TCP o invio UDP) non vanno a buon fine e in genere restituiscono un errore
EPERM(operazione non consentita). - L'app ha come target il livello API 36 o inferiore: l'autorizzazione viene
considerata un'autorizzazione suddivisa su
INTERNET. Alle app che hanno come target livelli API inferiori viene concessa automaticamente questa autorizzazione se dispongono diINTERNET.
- L'app ha come target Android 17 o versioni successive: l'autorizzazione
deve essere richiesta esplicitamente. Se manca, le operazioni socket (ad esempio
connessione TCP o invio UDP) non vanno a buon fine e in genere restituiscono un errore
- Avviso di compatibilità: se un'app ricevente aggiorna il proprio target ad Android 17, ma non richiede questa autorizzazione, le connessioni in entrata da altre app vengono rifiutate, anche se l'app mittente ha come target un livello API inferiore.
Attiva CT per impostazione predefinita
Se un'app ha come target Android 17 o versioni successive, Certificate Transparency (CT) è attivato per impostazione predefinita. (Su Android 16, CT è disponibile, ma le app dovevano attivarlo.)
Safer Native DCL—C
Se la tua app ha come target Android 17 o versioni successive, la protezione Safer Dynamic Code Loading (DCL) introdotta in Android 14 per i file DEX e JAR ora si estende alle librerie native.
Tutti i file nativi caricati utilizzando System.load() devono essere contrassegnati come di sola lettura.
In caso contrario, il sistema genera UnsatisfiedLinkError.
Ti consigliamo di evitare il caricamento dinamico del codice nelle app, quando possibile, in quanto aumenta notevolmente il rischio che un'app possa essere compromessa da un'iniezione di codice o da un'alterazione del codice.
Fattori di forma dei dispositivi
Android 17 include le seguenti modifiche per migliorare l'esperienza utente su una vasta gamma di dimensioni e fattori di forma dei dispositivi.
Modifiche all'API della piattaforma per ignorare i vincoli di orientamento, ridimensionamento e proporzioni su schermi di grandi dimensioni (sw>=600 dp)
Abbiamo introdotto modifiche all'API della piattaforma in Android 16 per ignorare le limitazioni di orientamento, proporzioni e ridimensionamento su schermi di grandi dimensioni (sw >= 600 dp) per le app che hanno come target il livello API 36 o versioni successive. Gli sviluppatori hanno la possibilità di disattivare queste modifiche con l'SDK 36, ma questa disattivazione non sarà più disponibile per le app che hanno come target Android 17 o versioni successive.
Per saperne di più, consulta Le limitazioni relative all'orientamento e al ridimensionamento vengono ignorate.