Modifiche del comportamento: app che hanno come target Android 17 o versioni successive

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 InputConnection personalizzato possono recuperare i dati di selezione dei candidati chiamando TextAttribute.isTextSuggestionSelected(). Queste app devono quindi chiamare AccessibilityEvent.setTextChangeTypes() durante l'invio degli eventi TYPE_VIEW_TEXT_CHANGED. Le app che hanno come target Android 17 e che utilizzano TextView standard avranno questa funzionalità attiva per impostazione predefinita. ovvero TextView gestirà 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_CHANGED possono chiamare AccessibilityEvent.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 legacy MODE_BACKGROUND_ACTIVITY_START_ALLOWED. Devi invece adottare controlli granulari come MODE_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_INTERFACE nei 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 di INTERNET.
  • 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.