Oggi rilasceremo la prima beta di Android 17, continuando il nostro lavoro per creare una piattaforma che dia la priorità a privacy, sicurezza e prestazioni ottimizzate. Questa build continua il nostro lavoro per app Android più adattabili, introduce miglioramenti significativi alle funzionalità di fotocamera e contenuti multimediali, nuovi strumenti per ottimizzare la connettività e profili estesi per i dispositivi complementari. Questa release mette in evidenza anche un cambiamento fondamentale nel modo in cui portiamo le nuove release alla community di sviluppatori, dal tradizionale modello di Anteprima per gli sviluppatori al programma Android Canary.
Oltre l'anteprima per gli sviluppatori
Android ha sostituito la tradizionale "Anteprima per gli sviluppatori" con un canale Canary continuo. Questo nuovo modello "always-on" offre tre vantaggi principali:
- Accesso più rapido:le funzionalità e le API vengono inserite in Canary non appena superano i test interni, anziché attendere una release trimestrale.
- Maggiore stabilità:i primi "test sul campo" in Canary si traducono in un'esperienza beta più raffinata con nuove API e modifiche del comportamento più vicine alla versione finale.
- Test più semplici:Canary supporta gli aggiornamenti OTA (non è più necessario il flashing manuale) e, in quanto canale di aggiornamento separato, si integra più facilmente con i flussi di lavoro CI e ti offre la prima finestra per fornire feedback immediati sui potenziali cambiamenti imminenti.
Programma di Android 17
Passeremo rapidamente da questa versione beta al traguardo della stabilità della piattaforma, previsto per marzo. In questa fase, forniremo le API SDK/NDK finali e i comportamenti nelle app in gran parte definitivi. Da quel momento avrai diversi mesi prima della release finale per completare i test.
Un anno di uscite
Prevediamo che Android 17 continui a ricevere aggiornamenti in una serie di release trimestrali. La release in programma per il secondo trimestre è l'unica in cui verranno introdotte modifiche al comportamento che potrebbero causare problemi alle app. Prevediamo di rilasciare una versione secondaria dell'SDK nel quarto trimestre con API e funzionalità aggiuntive.
Limitazioni di orientamento e ridimensionamento
Con il rilascio della versione beta di Android 17, passiamo alla fase successiva della nostra roadmap adattiva: Android 17 (livello API 37) rimuove l'esclusione per gli sviluppatori per le limitazioni di orientamento e ridimensionabilità sui dispositivi con schermi grandi (sw > 600 dp).
Quando la tua app ha come target l'SDK 37, deve essere pronta ad adattarsi. Gli utenti si aspettano che le loro app funzionino ovunque, che si tratti di multitasking su un tablet, di aprire un dispositivo o di utilizzare un ambiente di finestre del computer, e si aspettano che la UI riempia lo spazio e rispetti la postura del dispositivo.
Modifiche principali per l'SDK 37
Le app che hanno come target Android 17 devono garantire la compatibilità con il ritiro degli attributi manifest e delle API runtime introdotti in Android 16. Quando viene eseguito su uno schermo di grandi dimensioni (dimensione più piccola ≥ 600 dp), i seguenti attributi e API verranno ignorati:
| Attributi/API manifest | Valori ignorati |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | tutti |
| minAspectRatio | tutti |
| maxAspectRatio | tutti |
Esenzioni e controllo degli utenti
Queste modifiche sono specifiche per gli schermi di grandi dimensioni e non si applicano agli schermi più piccoli di sw600dp (inclusi gli smartphone tradizionali). Inoltre, le app classificate come giochi (in base al flag android:appCategory) sono esenti da queste limitazioni.
È anche importante notare che gli utenti mantengono il controllo. Possono attivare/disattivare esplicitamente l'utilizzo del comportamento predefinito di un'app tramite le impostazioni delle proporzioni del sistema.
Aggiornamenti alle modifiche alla configurazione
Per migliorare la compatibilità delle app e ridurre al minimo la riproduzione video interrotta, la perdita di input e altri tipi di perdita di stato che causano interruzioni, stiamo aggiornando il comportamento predefinito per la ricreazione delle attività. A partire da Android 17, il sistema non riavvierà più le attività per impostazione predefinita per modifiche di configurazione specifiche che in genere non richiedono una ricreazione della UI, tra cui CONFIG_KEYBOARD, CONFIG_KEYBOARD_HIDDEN, CONFIG_NAVIGATION, CONFIG_UI_MODE (quando viene modificato solo UI_MODE_TYPE_DESK), CONFIG_TOUCHSCREEN e CONFIG_COLOR_MODE. Le attività in esecuzione riceveranno invece questi aggiornamenti tramite onConfigurationChanged. Se la tua applicazione si basa su un riavvio completo per ricaricare le risorse per queste modifiche, ora devi attivare esplicitamente l'utilizzo del nuovo attributo del manifest android:recreateOnConfigChanges, che ti consente di specificare quali modifiche alla configurazione devono attivare un ciclo di vita completo dell'attività (dall'interruzione alla distruzione e alla creazione di nuovo), insieme alle costanti correlate mcc, mnc e alle nuove keyboard, keyboardHidden, navigation, touchscreen e colorMode.
Preparare l'app
Abbiamo rilasciato strumenti e documentazione per semplificarti il compito. Il nostro post del blog dedicato offre ulteriori indicazioni, con strategie per risolvere i problemi più comuni. Le app dovranno supportare layout orizzontali e verticali per le dimensioni delle finestre nell'intera gamma di proporzioni, in quanto la limitazione dell'orientamento o delle proporzioni non sarà più un'opzione. Ti consigliamo di testare la tua app utilizzando la beta 1 di Android 17 con gli emulatori di Pixel Tablet o Pixel Fold (configurati per targetSdkPreview = "CinnamonBun") o utilizzando il framework di compatibilità delle app per attivare UNIVERSAL_RESIZABLE_BY_DEFAULT sui dispositivi Android 16.
Prestazioni
Lock-free MessageQueue
In Android 17, le app che hanno come target l'SDK 37 o versioni successive riceveranno una nuova implementazione di android.os.MessageQueue in cui l'implementazione è senza blocchi. La nuova implementazione migliora le prestazioni e riduce i frame mancanti, ma potrebbe interrompere i client che riflettono su campi e metodi privati di MessageQueue.
Garbage collection generazionale
Android 17 introduce la garbage collection generazionale nel raccoglitore Concurrent Mark-Compact di ART. Questa ottimizzazione introduce raccolte della generazione giovane più frequenti e meno intensive in termini di risorse insieme a raccolte dell'heap completo, con l'obiettivo di ridurre il costo della CPU e la durata complessiva della garbage collection. I miglioramenti di ART sono disponibili anche per oltre un miliardo di dispositivi con Android 12 (livello API 31) e versioni successive tramite gli aggiornamenti di sistema Google Play.
I campi finali statici ora sono davvero finali
A partire da Android 17, le app che hanno come target Android 17 o versioni successive non potranno modificare i campi "static final", consentendo al runtime di applicare ottimizzazioni delle prestazioni in modo più aggressivo. Un tentativo di farlo tramite reflection (e deep reflection) comporterà sempre il lancio di IllegalAccessException. La modifica tramite la famiglia di metodi SetStatic<Type>Field di JNI causerà l'arresto anomalo immediato dell'applicazione.
Limitazioni della visualizzazione delle notifiche personalizzate
Per ridurre l'utilizzo della memoria, stiamo limitando le dimensioni delle visualizzazioni delle notifiche personalizzate. Questo aggiornamento chiude una scappatoia che consente alle app di aggirare i limiti esistenti utilizzando gli URI. Questo comportamento è controllato dalla versione dell'SDK di destinazione ed entra in vigore per le app che hanno come target l'API 37 e versioni successive.
Nuovi trigger di ProfilingManager per il debug delle prestazioni
Abbiamo introdotto diversi nuovi trigger di sistema in ProfilingManager per aiutarti a raccogliere dati approfonditi per il debug dei problemi di prestazioni. Questi trigger sono TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM, e TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.
Per capire come configurare i nuovi trigger di sistema, consulta la documentazione relativa alla profilazione basata su trigger e al recupero e all'analisi dei dati di profilazione.
Media e fotocamera
Android 17 offre strumenti di livello professionale alle app multimediali e della fotocamera, con funzionalità come transizioni fluide e volume standardizzato.
Aggiornamenti dinamici della sessione della videocamera
Abbiamo introdotto updateOutputConfigurations() in CameraCaptureSession. In questo modo puoi collegare e scollegare dinamicamente le superfici di output senza dover riconfigurare l'intera sessione di acquisizione della videocamera. Questa modifica consente transizioni fluide tra casi d'uso e modalità della fotocamera (ad esempio scattare foto e registrare video) senza il costo della memoria e la complessità del codice per configurare e mantenere tutte le superfici di output della fotocamera di cui l'app potrebbe aver bisogno durante l'avvio della fotocamera. In questo modo si eliminano i problemi o i blocchi visibili all'utente durante il funzionamento.
fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs: List<OutputConfiguration>)) {
// Dynamically update the session without closing and reopening
try {
// Update the output configurations
session.updateOutputConfigurations(newOutputConfigs)
} catch (e: CameraAccessException) {
// Handle error
}
}
Metadati del dispositivo multicamera logico
Quando lavori con videocamere logiche che combinano più sensori di videocamere fisiche, ora puoi richiedere metadati aggiuntivi da tutte le videocamere fisiche attive coinvolte in un'acquisizione, non solo da quella principale. In precedenza, dovevi implementare soluzioni alternative, a volte allocando stream fisici non necessari, per ottenere metadati da videocamere attive secondarie (ad es. durante il cambio di obiettivo per lo zoom in cui è attiva una videocamera follower). Questa funzionalità introduce una nuova chiave, LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS, in CaptureRequest e CaptureResult. Se imposti questa chiave su ON in CaptureRequest, TotalCaptureResult includerà i metadati di queste fotocamere fisiche attive aggiuntive. Puoi accedere a questi metadati completi utilizzando TotalCaptureResult.getPhysicalCameraTotalResults() per ottenere informazioni più dettagliate che potrebbero consentirti di ottimizzare l'utilizzo delle risorse nelle tue applicazioni della fotocamera.
Supporto di Versatile Video Coding (VVC)
Android 17 aggiunge il supporto per lo standard Versatile Video Coding (VVC). Ciò include la definizione del tipo MIME video/vvc in MediaFormat, l'aggiunta di nuovi profili VVC in MediaCodecInfo e l'integrazione del supporto in MediaExtractor. Questa funzionalità sarà disponibile sui dispositivi con supporto per la decodifica hardware e driver compatibili.
Qualità costante per la registrazione video
Abbiamo aggiunto setVideoEncodingQuality() a MediaRecorder. In questo modo puoi configurare una modalità di qualità costante (CQ) per i codificatori video, il che ti consente di controllare con maggiore precisione la qualità video oltre alle semplici impostazioni della velocità in bit.
Protezione dell'audio in background
A partire da Android 17, il framework audio applicherà restrizioni alle interazioni audio in background, tra cui riproduzione audio, richieste di messa a fuoco audio e API di modifica del volume, per garantire che queste modifiche vengano avviate intenzionalmente dall'utente.
Se l'app tenta di chiamare le API audio mentre l'applicazione non si trova in un ciclo di vita valido, le API di riproduzione audio e modifica del volume non andranno a buon fine senza che venga generata un'eccezione o fornito un messaggio di errore. L'API Audio Focus non andrà a buon fine e restituirà il codice risultato AUDIOFOCUS_REQUEST_FAILED.
Privacy e sicurezza
Ritiro dell'attributo Traffico con testo in chiaro
L'attributo android:usesCleartextTraffic è ora deprecato. Se la tua app ha come target Android 17 o versioni successive e si basa su usesCleartextTraffic="true" senza una configurazione della sicurezza di rete corrispondente, per impostazione predefinita non consentirà il traffico di testo non criptato. Ti consigliamo di eseguire la migrazione ai file di configurazione della sicurezza di rete per un controllo granulare.
HPKE Hybrid Cryptography
Stiamo introducendo un'interfaccia del service provider (SPI) pubblica per un'implementazione della crittografia ibrida HPKE, che consente una comunicazione sicura utilizzando una combinazione di crittografia simmetrica e a chiave pubblica (AEAD).
Connettività e telecomunicazioni
Cronologia delle chiamate VoIP migliorata
Stiamo introducendo la gestione delle preferenze utente per l'integrazione della cronologia chiamate VoIP delle app. Ciò include il supporto degli URI degli avatar del chiamante e dei partecipanti nel dialer di sistema, consentendo un controllo granulare da parte dell'utente sulla privacy del registro chiamate e arricchendo la visualizzazione dei registri chiamate VoIP integrati.
Rilevamento della distanza e della prossimità tramite Wi-Fi
Wi-Fi Ranging è stato migliorato con nuove funzionalità di rilevamento della prossimità, che supportano la misurazione continua della distanza e l'individuazione peer-to-peer sicura. Gli aggiornamenti a Wi-Fi Aware includono nuove API per gli handle peer e la memorizzazione nella cache PMKID per la misurazione sicura 11az.
Produttività e strumenti per sviluppatori
Aggiornamenti per le app del dispositivo complementare
Abbiamo introdotto due nuovi profili in CompanionDeviceManager per migliorare la distinzione dei dispositivi e la gestione delle autorizzazioni:
- Dispositivi medici:questo profilo consente alle app mobile per dispositivi medici di richiedere tutte le autorizzazioni necessarie con un solo tocco, semplificando la procedura di configurazione.
- Fitness tracker: il profilo DEVICE_PROFILE_FITNESS_TRACKER consente alle app complementari di indicare esplicitamente che gestiscono un fitness tracker. In questo modo si garantiscono esperienze utente accurate con icone distinte, riutilizzando le autorizzazioni dei ruoli esistenti per la visualizzazione.
Inoltre, CompanionDeviceManager ora offre una finestra di dialogo unificata per le richieste di associazione dei dispositivi e di autorizzazione Dispositivi nelle vicinanze. Puoi utilizzare il nuovo metodo setExtraPermissions in AssociationRequest.Builder per raggruppare le richieste di autorizzazione nelle vicinanze all'interno del flusso di associazione esistente, riducendo il numero di finestre di dialogo presentate all'utente.
Iniziare a utilizzare Android 17
Puoi registrare qualsiasi dispositivo Pixel supportato per ricevere questo e i futuri aggiornamenti di Android Beta via OTA. Se non hai un dispositivo Pixel, puoi utilizzare le immagini di sistema a 64 bit con l'emulatore Android in Android Studio.
Se attualmente partecipi al programma Android beta, ti verrà offerto un aggiornamento over-the-air alla versione beta 1.
Se hai Android 26Q1 Beta e vuoi scaricare la versione stabile finale di 26Q1 e uscire dalla versione beta, devi ignorare l'aggiornamento OTA (over-the-air) alla versione beta 1 di 26Q2 e attendere il rilascio di 26Q1.
Ci piacerebbe ricevere il tuo feedback, quindi segnala problemi e invia richieste di funzionalità nella pagina dei feedback. Prima riceviamo il tuo feedback, più elementi possiamo includere nel nostro lavoro sulla versione finale.
Per un'esperienza di sviluppo ottimale con Android 17, ti consigliamo di utilizzare l'ultima anteprima di Android Studio (Panda). Una volta configurato, ecco alcune cose che dovresti fare:
- Compila in base al nuovo SDK, esegui i test negli ambienti CI e segnala eventuali problemi nel nostro tracker nella pagina di feedback.
- Testa la tua app attuale per verificarne la compatibilità, scopri se è interessata dalle modifiche in Android 17 e installala su un dispositivo o un emulatore con Android 17 per testarla a fondo.
Aggiorneremo regolarmente le immagini di sistema di anteprima/beta e l'SDK durante il ciclo di rilascio di Android 17. Una volta installata una build beta, riceverai automaticamente i futuri aggiornamenti via OTA per tutte le versioni beta e di anteprima successive.
Per informazioni complete, visita il sito per sviluppatori Android 17.
Partecipa alla conversazione
Man mano che ci avviciniamo alla stabilità della piattaforma e alla release stabile finale di Android 17 entro la fine dell'anno, il tuo feedback rimane la nostra risorsa più preziosa. Che tu sia un early adopter sul canale Canary o uno sviluppatore di app che esegue test sulla versione beta 1, ti consigliamo di unirti alle nostre community e inviare feedback. Ti ascoltiamo.
Continua a leggere
-
Novità sul prodotto
Annunciato oggi durante The Android Show, Android sta passando da sistema operativo a sistema intelligente, creando maggiori opportunità di interazione con le tue app.
Matthew McCullough • Lettura: 4 minuti
-
Novità sul prodotto
Oggi stiamo migliorando lo sviluppo per Android con Gemma 4, il nostro modello open all'avanguardia più recente progettato con funzionalità di ragionamento complesso e chiamata di strumenti autonomi.
Matthew McCullough • Lettura di 2 minuti
-
Novità sul prodotto
Android 17 ha raggiunto ufficialmente la stabilità della piattaforma oggi con la beta 3. Ciò significa che la superficie API è bloccata. Puoi eseguire i test di compatibilità finali e caricare le app che hanno come target Android 17 sul Play Store.
Matthew McCullough • Lettura di 5 minuti
Resta al passo con le novità
Ricevi gli ultimi approfondimenti sullo sviluppo per Android direttamente nella tua casella di posta ogni settimana.