Note di rilascio di Android 10

Questa pagina riassume le principali funzionalità della release Android 10 e fornisce link a ulteriori informazioni. Questi riepiloghi delle funzionalità sono organizzati in base alla posizione della documentazione della funzionalità su questo sito.

Build

java_sdk_library

Android 10 introduce java_sdk_library, una nuova regola di build per risolvere i problemi di compatibilità per le librerie Java condivise. I produttori di dispositivi possono utilizzare questo meccanismo per le proprie librerie Java condivise per mantenere la compatibilità con le versioni precedenti delle proprie API.

Architettura

Componenti del sistema modulare

Android 10 modularizza alcuni componenti del sistema Android e consente di aggiornarli al di fuori del normale ciclo di rilascio di Android. Alcuni moduli includono:

Hardware Abstraction Layer (HAL)

Android 10 aggiunge il supporto per gli HAL per spegnersi automaticamente quando non hanno client.

Kernel

ABI

Android 10 include il supporto per nuove utilità di monitoraggio ABI per facilitare il confronto, il monitoraggio e la mitigazione delle modifiche all'ABI del kernel che influiscono sulla compatibilità con i moduli del kernel.

Android 10 introduce anche un controllo dell'utilizzo dell'ABI basato su simboli. Il controllo può rilevare i binari precompilati obsoleti al momento della compilazione, in modo che gli sviluppatori di librerie condivise possano sapere quali binari precompilati potrebbero essere danneggiati dalla loro modifica e quali devono essere ricompilati.

Android Live-Lock Daemon

Android 10 include il daemon Android Live-Lock (llkd), progettato per rilevare e mitigare i deadlock del kernel.

vDSO32 su ARM64

Android 10 supporta l'utilizzo di vDSO32 sui kernel a 64 bit, che offre un aumento dello 0,4% della durata della batteria e altri miglioramenti delle prestazioni.

Voci fstab per le partizioni montate in anticipo

Android 10 richiede ai dispositivi di specificare fstab voci per partizioni montate in anticipo utilizzando un file fstab nel ramdisk della prima fase.

HIDL

Offload BroadcastQueue

Android 10 include una nuova coda offload BroadcastQueue per le code in background e in primo piano esistenti. La coda di scaricamento ha lo stesso comportamento di priorità e timeout della coda in background. Per evitare di bloccare la coda in background, in cui possono verificarsi trasmissioni più interessanti o visibili all'utente, la coda di offload gestisce la trasmissione BOOT_COMPLETED che molte app ascoltano e che può richiedere molto tempo per essere completata. La coda di scaricamento attualmente gestisce solo la trasmissione BOOT_COMPLETED, ma potrebbe gestire altre trasmissioni lunghe.

Servizio SystemSuspend

Android 10 sostituisce il thread in libsuspend responsabile dell'avvio della sospensione del sistema con il servizio HIDL SystemSuspend. Questa implementazione offre funzionalità equivalenti alle versioni precedenti sfruttando i vantaggi dell'infrastruttura HIDL di Android.

safe_union in HIDL

Android 10 introduce safe_union, un tipo di unione con tag esplicito, in HIDL.

Configurazione

HAL ConfigStore

Android 10 ritira l'HAL ConfigStore a causa dell'elevato consumo di memoria e della difficoltà di utilizzo e lo sostituisce con le proprietà di sistema.

API Config File Schema

La piattaforma Android contiene un gran numero di file XML per l'archiviazione dei dati di configurazione. Molti file XML si trovano nella partizione vendor, ma vengono letti nella partizione system. In questo caso, lo schema del file XML funge da interfaccia tra le due partizioni, pertanto lo schema deve essere specificato in modo esplicito e deve evolvere in modo compatibile con le versioni precedenti. Prima di Android 10, la piattaforma non forniva meccanismi per richiedere la specifica e l'utilizzo dello schema XML o per impedire modifiche incompatibili nello schema. Android 10 fornisce questo meccanismo, chiamato API schema file di configurazione.

Proprietà di sistema come API

Le proprietà di sistema a cui si accede nelle partizioni sono schematizzate in file di descrizione sysprop e le API per accedere alle proprietà vengono generate come funzioni concrete per C++ e classi per Java.

Oggetto dell'interfaccia fornitore (VINTF)

VINTF

Le modifiche a VINTF in Android 10 includono:

  • Deprecazione dei tag versione AVB
  • Aggiunta di informazioni sul kernel nei pacchetti OTA
  • Creazione ufficiale di manifest ODM
  • Aggiunta di una matrice di compatibilità dei prodotti
  • Associazione di una voce manifest a un modulo HAL nel sistema di build

Bootloader

Ramdisk

In Android 10, il file system root non è più incluso in ramdisk.img e viene invece unito a system.img.

Creare partizioni ODM

Android 10 include il supporto per la creazione di partizioni odm utilizzando il sistema di compilazione Android. Puoi utilizzare una partizione /odm separata per le personalizzazioni, il che ti consente di utilizzare una singola immagine del fornitore per più SKU hardware. Ciò consente ai produttori di design originali (ODM) di personalizzare i pacchetti di supporto della scheda (BSP) del fornitore di system-on-chip (SoC) per i propri dispositivi specifici (le proprie schede). Possono implementare moduli del kernel per componenti specifici della scheda, daemon specifici della scheda o le proprie funzionalità sui livelli di astrazione hardware (HAL). Possono anche sostituire o personalizzare i componenti del SoC.

Controllo delle versioni dell'intestazione dell'immagine di avvio

Android 10 aggiorna l'intestazione dell'immagine di avvio alla versione 2, che include una sezione per archiviare l'immagine del blob dell'albero dei dispositivi (DTB). Android 10 I test VTS verificano che tutti i dispositivi lanciati con Android 10 utilizzino la versione 2 dell'intestazione dell'immagine di avvio e includano un'immagine DTB valida come parte delle immagini di avvio/recupero.

Immagini di ripristino per dispositivi non A/B

In Android 9 e versioni successive, l'immagine di ripristino di un dispositivo deve contenere informazioni dell'immagine di overlay. I produttori di dispositivi possono utilizzare DeviceTree o Advanced Configuration and Power Interface (ACPI) per descrivere tutti i dispositivi non rilevabili. Android 10 e versioni successive includono il supporto per le architetture che utilizzano ACPI anziché il blob DeviceTree per l'overlay (DTBO).

AIDL stabile

Android 10 aggiunge il supporto per l'Android Interface Definition Language (AIDL) stabile, un nuovo modo per tenere traccia dell'interfaccia di programmazione di un'applicazione (API)/dell'interfaccia binaria dell'applicazione (ABI) fornita dalle interfacce AIDL.

Spostare fastboot nello spazio utente

Android 10 aggiunge il supporto per le partizioni ridimensionabili spostando l'implementazione di fastboot dal bootloader allo spazio utente.

Visualizzazione

Riproduzione video HDR

Android 10 supporta la riproduzione HDR10, VP9 e HDR10+.

Classificazione del testo

La classificazione del testo utilizza tecniche di machine learning per aiutare gli sviluppatori a classificare il testo. Android 10 introduce due metodi per l'API TextClassifier: suggestConversationActions e detectLanguage. Il metodo suggestConversationActions genera risposte e azioni suggerite da una determinata conversazione, mentre il metodo detectLanguage rileva la lingua del testo.

Supporto del rendering del carattere Zawgyi

Zawgyi è il carattere più popolare in Myanmar. Android 9 e versioni precedenti non supportavano il rendering di Zawgyi perché non è conforme a Unicode. Android 10 risolve questo problema includendo un carattere Unicode in grado di eseguire il rendering sia del birmano Unicode sia dello Zawgyi. Non è necessario alcun lavoro di implementazione per supportare il rendering del carattere Zawgyi sui dispositivi lanciati con Android 10. Se i tuoi dispositivi hanno un'implementazione personalizzata per supportare Zawgyi, puoi:

  • Ripristina le modifiche e utilizza il metodo supportato dalla piattaforma.
  • Mantieni il carattere Zawgyi comune nel sistema e utilizza il codice locale my-qaag nel tuo fonts.xml. Per ulteriori informazioni, consulta le note di rilascio di Unicode CLDR su Zawgyi (Qaag).

Limitazioni alla funzionalità di nascondere le icone delle app

Android 10 limita la possibilità per le app di nascondere le icone del launcher. Se un'app non ha un'attività di avvio abilitata, il sistema mostra un'attività sintetizzata nel launcher; questa attività sintetizzata rappresenta la pagina dei dettagli dell'app nelle impostazioni di sistema.

Per saperne di più sulla logica utilizzata per mostrare le icone delle app, inclusi i tipi di app le cui icone non vengono mostrate, consulta la documentazione relativa a getActivityList() nel riferimento API.

Impostazioni

Per migliorare l'accessibilità, Android 10 include impostazioni di timeout personalizzabili dall'utente. Le modifiche all'API e alle impostazioni sono disponibili con Android 10. Se personalizzi le impostazioni, assicurati che questa funzionalità sia supportata. Se sul tuo dispositivo sono presenti elementi della UI che vanno in timeout, utilizza l'API timeouts. Per ulteriori informazioni, consulta le linee guida per l'accessibilità per gli sviluppatori Android.

Compatibilità

Compatibility Definition Document (CDD) di Android

Il Compatibility Definition Document di Android 10 si basa sulle versioni precedenti con aggiornamenti per nuove funzionalità e modifiche ai requisiti per le funzionalità rilasciate in precedenza.

Test

Suite di test di compatibilità (Compatibility Test Suite, CTS)

Android CTS ha una pagina delle note di rilascio separata che elenca molte modifiche importanti per Android 10.

Download di CTS

I pacchetti CTS che supportano Android 10 sono disponibili nella pagina Download CTS. Il codice sorgente dei test inclusi può essere sincronizzato con il tag android-cts-10_r1 nell'albero open source.

CTS shim APEX

Android 10 introduce un pacchetto chiamato CtsShimApex, che deve essere preinstallato su un dispositivo per scrivere test CTS per la gestione APEX.

Modalità test harness

La modalità di test CTS aiuta gli sviluppatori ad automatizzare i test per un dispositivo o un parco risorse di dispositivi.

Modalità App istantanee

A partire da Android 10, CTS viene eseguito in modalità app istantanee, il che significa installare l'APK di test come app istantanea ed eseguire i test.

Oltre a una modalità CTS per le app istantanee, Android 10 include CTS Verifier per le app istantanee

Test audio professionale dello strumento di verifica CTS

Android 10 aggiunge un test CTS Verifier per la conformità Pro Audio.

Test MIDI di CTS Verifier

In Android 10, il test MIDI di CTS Verifier verifica la funzionalità MIDI con interfacce MIDI USB, interfacce MIDI Bluetooth e un percorso di dispositivo MIDI virtuale.

Interpretazione del test CTS

Android 10 aggiorna il meccanismo di interpretazione dei risultati del CTS.

Vendor Test Suite (VTS)

Test VTS con ramdisk di debug

In Android 10, l'immagine di sistema generica (GSI) utilizzata per eseguire i test di conformità CTS-on-GSI/VTS cambia dal tipo di build userdebug a user, perché GSI è firmata per la release. Tuttavia, il comando adb root che concede a un host le autorizzazioni di root al dispositivo Android in fase di test non è disponibile in una build utente. Questo è un problema perché VTS richiede adb root per essere eseguito.

Il ramdisk di debug viene introdotto per rendere possibile adb root, se il dispositivo è sbloccato. In questo modo, il flusso di test viene semplificato riutilizzando la stessa build utente system.img (GSI o system.img dell'OEM).

Convalida di Hardware Composer

Android 10 aggiunge una nuova classe di test VTS per la convalida di Hardware Composer tramite l'interfaccia readback in IComposerClient.hal. Se i fornitori non implementano readback, i test vengono superati automaticamente.

Debug…

Carica librerie condivise con class loader diversi

In Android 9 e versioni precedenti, le app caricavano le librerie condivise Java collegate nel caricatore di classi dell'app. In Android 10, il framework utilizza un class loader diverso da quello dell'app per caricare le librerie condivise Java collegate tramite uses-library o uses-static-library.

In generale, le app non devono fare affidamento sull'utilizzo di un caricatore di classi specifico, quindi questa modifica non dovrebbe interrompere il comportamento delle app. Tuttavia, se un'app si basa sull'utilizzo di un unico class loader, questo comportamento non funziona. Inoltre, la visibilità package-private delle classi nello stesso pacchetto è ancora supportata, ma non nelle librerie condivise.

I produttori di dispositivi potrebbero riscontrare problemi di compatibilità delle app durante i test dei loro dispositivi con Android 10.

Funzionalità di sicurezza

Per un elenco più completo dei miglioramenti relativi solo a sicurezza e privacy, consulta la pagina Miglioramenti alla sicurezza e alla privacy di Android 10.

Autenticazione volti

L'autenticazione del volto consente agli utenti di sbloccare il dispositivo semplicemente guardando la parte anteriore. Android 10 aggiunge il supporto per un nuovo stack di autenticazione del volto che può elaborare in modo sicuro i frame della videocamera, preservando la sicurezza e la privacy durante l'autenticazione del volto sull'hardware supportato. Android 10 offre anche un modo semplice per le implementazioni conformi alla sicurezza di attivare l'integrazione delle app per transazioni come l'online banking o altri servizi.

Accesso esteso

Gli agenti di attendibilità, il meccanismo sottostante utilizzato dai meccanismi di autenticazione terziari come Smart Lock, possono estendere lo sblocco solo in Android 10. Gli agenti di attendibilità non possono più sbloccare un dispositivo bloccato e possono tenerlo sbloccato solo per un massimo di quattro ore.

Crittografia

OEMCrypto

Android 10 utilizza la versione 15 dell'API OEMCrypto.

Test

BoundsSanitizer

Android 10 implementa BoundsSanitizer (BoundSan) in Bluetooth e nei codec. BoundSan utilizza il sanitizer dei limiti di UBSan. Questa mitigazione è abilitata a livello di modulo. Contribuisce a mantenere sicuri i componenti critici di Android e non deve essere disattivato. BoundSan è abilitato nei seguenti codec:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Sanificazione dell'overflow di numeri interi

Android 10 attiva Integer Overflow Sanitization (IntSan) nei codec software. Assicurati che le prestazioni di riproduzione siano accettabili per tutti i codec non supportati nell'hardware del dispositivo. IntSan è abilitato nei seguenti codec:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Memoria solo esecuzione

Per impostazione predefinita, le sezioni di codice eseguibile per i binari di sistema AArch64 sono contrassegnate come di sola esecuzione (non leggibili) come mitigazione di hardening contro gli attacchi di riutilizzo di codice just-in-time. Il codice che combina dati e codice e il codice che ispeziona intenzionalmente queste sezioni (senza prima rimappare i segmenti di memoria come leggibili) non funziona più. Le app con un SDK target Android 10 (livello API 29 o superiore) sono interessate se l'app tenta di leggere sezioni di codice di librerie di sistema con memoria di sola esecuzione (XOM) abilitata in memoria senza prima contrassegnare la sezione come leggibile.

Scudo

Scudo è un allocatore di memoria in modalità utente dinamico progettato per essere più resiliente alle vulnerabilità correlate all'heap. Fornisce le primitive di allocazione e deallocazione C standard, nonché le primitive C++.

ShadowCallStack

ShadowCallStack (SCS) è una modalità di strumentazione LLVM che protegge dalle sovrascritture dell'indirizzo di ritorno (come gli overflow del buffer dello stack) salvando l'indirizzo di ritorno di una funzione in un'istanza ShadowCallStack allocata separatamente nel prologo della funzione delle funzioni non foglia e caricando l'indirizzo di ritorno dall'istanza ShadowCallStack nell'epilogo della funzione.

Audio

HAL audio

Android 10 include le seguenti nuove funzionalità per l'HAL audio.

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Sono stati aggiunti requisiti aggiuntivi per l'implementazione di HAL e sottosistemi audio.

Effetti di pre-elaborazione

Android fornisce effetti di preelaborazione, come cancellazione dell'eco acustico, controllo automatico del guadagno ed eliminazione dei rumori. Android 10 include nuovi requisiti per l'acquisizione con VOICE_COMMUNICATION.

Gestione norme audio

Android 10 include un refactoring significativo del gestore delle norme audio per offrire maggiore flessibilità per supportare casi d'uso complessi per il settore automobilistico.

Audio ad alta risoluzione

Android 10 include i seguenti miglioramenti per l'audio ad alta risoluzione.

  • Supporto dei numeri in virgola mobile
  • Supporto della frequenza di 192 kHz
  • Supporto di otto canali
  • Inclusione delle informazioni sulla tempistica

Acquisizione simultanea

Android 10 migliora l'esperienza utente di acquisizione simultanea che richiede l'acquisizione simultanea di più di un audio attivo.

AudioPlaybackCapture

Android 10 contiene una nuova API chiamata AudioPlaybackCapture, che consente alle app di copiare l'audio riprodotto da altre app. Questa funzionalità è simile all'acquisizione dello schermo, ma per l'audio. Il caso d'uso principale è consentire alle app di streaming di acquisire l'audio riprodotto dai giochi.

L'API di acquisizione non influisce sulla latenza dell'app il cui audio viene acquisito.

MIDI

Android 10 semplifica il porting di app audio professionali che utilizzano MIDI sulla piattaforma Android utilizzando l'API NDK.AMidi

Fotocamera

Per un riepilogo delle modifiche all'API Camera, all'HAL della fotocamera e al modulo della fotocamera introdotte in Android 10, consulta Aggiornamenti della fotocamera di Android 10.

Miglioramenti alla privacy del framework della fotocamera

Android 10 introduce miglioramenti alla privacy nel framework della fotocamera. Per evitare di esporre informazioni potenzialmente sensibili della videocamera statica in CameraCharacteristics senza il consenso dell'utente, le app devono ottenere l'autorizzazione CAMERA per recuperare i metadati statici con un tag sensibile alla privacy utilizzando il metodo getCameraCharacteristics.

Per ottenere un elenco delle chiavi delle caratteristiche della videocamera che richiedono l'autorizzazione CAMERA, chiama il metodo getKeysNeedingPermission.

Query di riconfigurazione della sessione

Android 10 aggiunge una query di riconfigurazione della sessione, una funzionalità che consente di migliorare le prestazioni grazie a un maggiore controllo sulla logica di riconfigurazione dei parametri di sessione interni.

API di gestione dei buffer HAL3 della fotocamera

Android 10 introduce API di gestione dei buffer HAL3 della videocamera facoltative che consentono di implementare la logica di gestione dei buffer per ottenere diversi compromessi tra memoria e latenza di acquisizione nelle implementazioni HAL della videocamera.

Sensore fotocamera fisico dinamico di Fotocamera HAL

Android 10 introduce un tag di metadati dinamici, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID, che indica la fotocamera fisica sottostante attiva di un dispositivo fotocamera logica. Per ulteriori informazioni, vedi Supporto multi-camera.

Supporto per nascondere le videocamere fisiche

In Android 10, l'HAL della fotocamera può ridurre il numero di fotocamere fisiche che possono essere aperte direttamente da un'app. Per ulteriori dettagli, vedi Supporto multi-fotocamera.

API VNDK Camera2

In Android 10, i moduli del fornitore possono accedere e controllare i dispositivi della fotocamera tramite due nuove interfacce HIDL standard, android.frameworks.cameraservice.service@2.0 e android.frameworks.cameraservice.device@2.0. Per rendere più comodo l'utilizzo delle interfacce HIDL, Android 10 introduce anche una libreria disponibile per i fornitori, libcamera2_vendor. Questa libreria è simile alla libreria Camera NDK, con alcune piccole modifiche.

Configurazioni di flussi di dati

Android 10 aggiunge funzionalità che consentono ai fornitori di videocamere di pubblicizzare flussi della videocamera consigliati ai client della videocamera e di supportare un' API per eseguire query sulle combinazioni di flussi.

Requisiti per la combinazione degli stream della videocamera

I dispositivi con Android 10 non sono più tenuti a supportare combinazioni di stream con stream di subcamere fisiche. Tuttavia, i dispositivi con Android 10 e la versione 3.5 del dispositivo HAL della fotocamera devono supportare isStreamCombinationSupported() per consentire alle app di eseguire query per verificare se è supportata una combinazione di stream contenente stream fisici.

Per ulteriori informazioni, vedi Supporto multi-camera.

immagini HEIF

Android 10 offre il supporto nativo della fotocamera per le immagini in formato HEIF (High Efficiency Image File Format), che offrono una qualità dell'immagine migliore e dimensioni inferiori rispetto alle immagini JPEG. I dispositivi devono disporre di un codificatore HEIC o HEVC per supportare le immagini HEIF.

Fotocamere monocromatiche

Android 10 offre un supporto aggiuntivo per il formato di flusso Y8, i metadati statici della matrice di filtri colore monocromatici e nel vicino infrarosso (NIR) e le funzioni DngCreator per le fotocamere monocromatiche.

Connettività

Chiamate e messaggistica

Numeri di emergenza e chiamate di emergenza

Android 10 offre un supporto migliore per le chiamate di emergenza. In caso di emergenza, i dispositivi che supportano IRadio HAL v1.4 possono avviare una chiamata di emergenza utilizzando i numeri di emergenza recuperati da una fonte come una scheda SIM, il segnale di rete o il database Android. I numeri possono essere classificati in base alle categorie di servizi di emergenza, come polizia, vigili del fuoco e ambulanza.

API per le chiamate di gruppo

Le API per le chiamate di gruppo sono un'estensione delle API eMBMS aggiunte in Android 9. Le nuove API definiscono uno standard per consentire alle app di partecipare e trasmettere chiamate di gruppo cell-broadcast interagendo con i pacchetti middleware eMBMS. Per funzionare correttamente, le chiamate di gruppo richiedono il supporto del fornitore del chipset, del fornitore del middleware e dell'operatore di telefonia mobile. La documentazione per sviluppatori è disponibile all'indirizzo developer.google.com.

Funzionalità SIM remota

Android 10 introduce funzionalità SIM remote che consentono alle app di messaggistica su un dispositivo host Android di inviare SMS tramite smartphone utilizzando meccanismi come il Bluetooth. Per saperne di più, consulta la documentazione di riferimento per il metodo getSubscriptionType e la costante SUBSCRIPTION_TYPE_REMOTE_SIM.

Più eSIM

In Android 10, la classe EuiccManager supporta i dispositivi con più SIM integrate (eSIM) o eUICC.

Aggiornamenti eSIM

Per i dispositivi che eseguono Android 10 e supportano le eSIM, deve essere definito un array di ID slot eUICC non rimovibili. I dispositivi devono supportare anche IRadio HAL v1.4 e IRadioConfig HAL v1.2. Per maggiori informazioni, consulta le pagine Implementazione dell'eSIM e Requisiti HAL.

5G Non-Standalone (NSA)

Android 10 aggiunge il supporto per 5G non-standalone (NSA). Il 5G NSA è una soluzione per le reti 5G in cui la rete è supportata da un'infrastruttura 4G esistente. Su Android 10, i dispositivi possono visualizzare un'icona 5G nella barra di stato quando si connettono a una rete 5G.

Suggerimento per l'account del telefono

Android 10 introduce il servizio di suggerimento account di telefonia, che consente di mostrare agli utenti suggerimenti per gli account di telefonia quando effettuano una chiamata.

Operatore

Eseguire la migrazione delle impostazioni della rete mobile

Android 10 ha riprogettato il codice dell'interfaccia utente delle impostazioni della rete mobile e lo ha spostato dallo stack di telefonia allo stack delle impostazioni. Per supportare il codice migrato, modifica i seguenti valori di configurazione delle impostazioni della rete mobile dalle risorse Android alle risorse CarrierConfig:

config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL

config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL

config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY

config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL

Identificatori dispositivo

Gli identificatori del dispositivo persistenti (IMEI/MEID, IMSI e numero di serie della build) sono protetti da un'autorizzazione privilegiata con accesso concesso anche alle app proprietario del dispositivo e del profilo. Poiché l'IMSI e il numero di serie della SIM sono forniti dall'operatore, l'accesso a questi identificatori viene concesso ai pacchetti con privilegi dell'operatore.

Wi-Fi

Selezione rete

Android valuta continuamente la qualità della rete connessa e valuta la qualità delle reti disponibili. Android 10 ha aggiornato gli algoritmi e le procedure per selezionare e passare da una rete Wi-Fi all'altra.

Scansione dell'offload rete preferita Wi-Fi

Android 10 introduce un metodo API facoltativo denominato setDeviceMobilityState() in WifiManager che aumenta l'intervallo tra le scansioni Preferred Network Offload (PNO) quando il dispositivo è fermo per ridurre il consumo energetico.

Wi-Fi dell'operatore

In Android 10, i dispositivi con la funzionalità Wi-Fi dell'operatore si connettono automaticamente alle reti Wi-Fi dell'operatore configurate (reti con certificati di chiave pubblica).

Wi-Fi Easy Connect

In Android 10, i dispositivi possono utilizzare Wi-Fi Easy Connect, che utilizza il protocollo di provisioning dei dispositivi (DPP) introdotto dalla Wi-Fi Alliance (WFA), per eseguire il provisioning e configurare i dispositivi Wi-Fi.

Modalità a bassa latenza Wi-Fi

Android 10 introduce una modalità Wi-Fi a bassa latenza, che configura il chip Wi-Fi per ridurre la latenza.

Server DHCP aggiornato

Nell'ambito della formazione di un ombrello di servizi "IP Server", dnsmasq viene eliminato. Android 10 sostituisce l'utilizzo funzionale del server DHCPv4 con un componente separato, scritto principalmente in Java per integrarsi meglio con il piano di controllo del framework Java. Ciò migliora la sicurezza e l'aggiornabilità del server DHCP. Per maggiori dettagli, vedi packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Per implementare questa modifica non è richiesta alcuna azione: tutti i dispositivi che rilasciano e aggiornano Android 10 utilizzano DhcpServer per impostazione predefinita. Se hai personalizzazioni del server DHCP, puoi ripristinare il comportamento di Android 9 impostando l'impostazione globale tether_enable_legacy_dhcp_server=1. Il nuovo DhcpServer è incluso nel modulo dei componenti di rete, pertanto qualsiasi personalizzazione della funzionalità del server DHCP deve essere eseguita a monte.

WPA3 e Wi-Fi Enhanced Open

Android 10 aggiunge il supporto per gli standard di sicurezza Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open per offrire una migliore privacy e robustezza contro gli attacchi noti.

Wi-Fi Direct

Wi-Fi Direct, noto anche come Wi-Fi P2P, consente ai dispositivi supportati di rilevarsi e connettersi direttamente tra loro utilizzando il protocollo Wi-Fi Direct senza accesso a internet o alla rete cellulare.

Miglioramenti della randomizzazione MAC

A partire da Android 10, la randomizzazione MAC è attivata per impostazione predefinita per la modalità client, SoftAp e Wi-Fi Direct. I dispositivi devono fornire un'opzione per attivare o disattivare la randomizzazione dell'indirizzo MAC per ogni SSID nell'interfaccia utente di sistema.

Passpoint R2

Android 10 introduce il supporto per le funzionalità Passpoint R2. Passpoint R2 implementa la registrazione online (OSU), un metodo standard per il provisioning di nuovi profili Passpoint. Android 10 supporta il provisioning dei profili EAP-TTLS utilizzando SOAP-XML.

NFC

Tecnologia NFC sicura

NFC sicura consente di attivare l'emulazione della scheda NFC off-host solo quando lo schermo del dispositivo è sbloccato. L'implementazione di questa funzionalità offre agli utenti la possibilità di attivare la tecnologia NFC sicura per una maggiore sicurezza.

Android Beam ritirato

In Android 10, Android Beam non è più necessario e le seguenti interfacce e metodi sono stati ritirati.

Interfacce:

Metodi:

Per utilizzare Android Beam, segnala la costante della funzionalità android.sofware.nfc.beam.

Grafica

ASurfaceControl

Android 10 aggiunge ASurfaceControl, un nuovo modo per SurfaceFlinger di accettare i buffer.

Implementazione della grafica

Livelli OpenGL ES

Android 10 introduce un sistema di stratificazione per GLES.

EGL 1.5

Android 10 implementa l'interfaccia EGL 1.5. Per informazioni sulle nuove funzionalità di EGL 1.5, consulta l'articolo Khronos Releases EGL 1.5 Specification.

Vulkan

Android 10 include il supporto per la grafica Vulkan 1.1. La piattaforma supporta anche VK_KHR_swapchain v70, quindi l'app Vulkan è in grado di creare un VkImage supportato dalla memoria swapchain.

Frequenza di aggiornamento delle prestazioni

Android 10 aggiunge il supporto per una frequenza di aggiornamento delle prestazioni. Questa funzionalità è disattivata per impostazione predefinita.

Interazione

Automotive

Audio per auto

In Android 10, il contesto HAL audio viene mappato a AudioAttributes.usage per identificare i suoni. Android supporta un'istanza AUDIO_DEVICE_OUT_BUS per contesto. IAudioControl HAL fornisce estensioni specifiche per il veicolo all'HAL audio.

Navigazione tramite gesti

Android 10 introduce un'opzione per una navigazione di sistema completamente gestuale. Per informazioni su come preparare le app per utilizzare questa funzionalità, consulta la pagina Navigazione tramite gesti sul sito Android for Developers.

Reti neurali

Android 10 introduce aggiornamenti all'API Neural Networks e all'HAL Neural Networks. Per un riepilogo delle modifiche, consulta Reti neurali.

Documentazione nuova e aggiornata sulle reti neurali per Android 10:

Sensori

Sensors HAL 2.0

Sensors HAL 2.0 supporta l'utilizzo di code di messaggi veloci (FMQ) per inviare eventi dei sensori dalla HAL al framework Android Sensors.

Sensori disattivati

Android 10 include un'impostazione per sviluppatori per disattivare tutti i sensori su un dispositivo. Questa funzionalità aiuta gli sviluppatori a testare la funzionalità della propria app in situazioni in cui questi sensori non sono disponibili e offre agli utenti un modo per controllare i sensori nel proprio dispositivo.

Se i tuoi dispositivi utilizzano l'implementazione predefinita di SensorService, CameraService e AudioPolicyService, non è necessaria alcuna personalizzazione aggiuntiva al design di riferimento. Se hai altri sensori, consulta la sezione Personalizzazione per ulteriori dettagli sul supporto di questa funzionalità.

Contenuti multimediali

Componenti multimediali aggiornabili

Android 10 fornisce componenti multimediali aggiornabili che consentono l'aggiornamento dei componenti di sistema modulari correlati ai contenuti multimediali tramite l'infrastruttura Google Play Store o tramite un meccanismo over-the-air (OTA) fornito da un partner.

DRM multimediale

Android 10 migliora l'utilità e l'usabilità delle API Java e NDK.MediaDrm

Decodifica

Android 10 supporta la decodifica SW AV1.

Autorizzazioni

Android 10 offre configurazioni di autorizzazioni aggiuntive per la trasparenza e la privacy degli utenti.

Provider di contatti e informazioni sulle affinità

A partire da Android 10, i dati correlati all'affinità dei contatti, gestiti dal componente Contacts Provider, vengono accessibili in modo diverso rispetto ad Android 9 e versioni precedenti. Queste modifiche relative all'accessibilità dei dati migliorano la privacy degli utenti in tutti i dispositivi Android 10 che utilizzano il componente Contacts Provider. Il database sottostante non contiene più dati sulle affinità dei contatti. Pertanto, le app non possono scriverci o leggerne i dati.

Le modifiche apportate ad Android 10 dovrebbero avere un impatto significativo sulle API. Se le tue app si basano sulle funzionalità ritirate menzionate in Provider di contatti e informazioni sulle affinità, ti consigliamo di aggiornarle per compensare eventuali modifiche. Inoltre, se utilizzi una versione fork del provider di contatti, devi aggiornarlo.

Autorizzazioni di accesso alla posizione a tre stati

Le autorizzazioni di accesso alla posizione a tre stati in Android 10 offrono agli utenti un maggiore controllo sul modo in cui le app accedono alle posizioni del dispositivo.

Promemoria sull'accesso alla posizione in background

Android 10 include un promemoria sull'accesso alla posizione in background, che aumenta la trasparenza sull'accesso delle app alla posizione di un dispositivo e aiuta gli utenti a mantenere il controllo su questo accesso.

Limitare le posizioni opportunistiche

Quando un'app richiede la posizione di un dispositivo, può attendere la risposta alla richiesta o, utilizzando i listener di posizione attivi, ricevere un aggiornamento della posizione opportunistico. A partire da Android 10, per ricevere aggiornamenti della posizione opportunistici, gli sviluppatori devono specificare di aver bisogno di aggiornamenti della posizione passivi dalla classe FusedLocationProviderClient.

Avvio di app in background

In Android 10, le app non privilegiate senza una finestra visibile non possono avviarsi automaticamente in primo piano. Questa modifica sopprime i popup pubblicitari e le acquisizioni dannose. Non è richiesto alcun intervento per abilitare questa funzionalità.

Limitazione tramite sandbox dell'app

In Android 10, le app hanno una visualizzazione non elaborata limitata del file system, senza accesso diretto a percorsi come /sdcard/DCIM. Tuttavia, le app mantengono l'accesso completo non elaborato ai percorsi specifici del pacchetto, come restituito da qualsiasi metodo applicabile, ad esempio Context.getExternalFilesDir(). Le app hanno ancora accesso completo non elaborato ai percorsi specifici del pacchetto.

Utilizza le linee guida per la condivisione dei file della sandbox dell'app per fornire una granularità appropriata per la condivisione dei dati.

Limitare l'accesso agli appunti delle app

In Android 10, l'accesso agli appunti è cambiato in modo che il contenuto degli appunti non possa essere visualizzato chiamando ClipboardManager.getPrimaryClip o aggiungendo un onPrimaryClipChangedListener listener per la notifica quando gli appunti cambiano. In questo modo, aumenta la privacy degli utenti e impedisce alle app di malvertising di modificare gli appunti.

In Android 10, l'accesso in lettura è consentito solo all'app corrente con focus di input o alla tastiera corrente. Il ClipboardManager.onPrimaryClipChanged() listener call ora viene attivato solo per le app che soddisfano queste limitazioni. ClipboardManager.getPrimaryClip e ClipboardManager.getPrimaryClipDescription restituiscono null se l'app richiedente non è l'editor del metodo di input (IME) predefinito o non ha il focus di input.

Le autorizzazioni di runtime includono il riconoscimento dell'attività

Ora gli utenti visualizzano una finestra di dialogo di riconoscimento dell'attività quando un'app accede alla posizione del dispositivo in background. Le autorizzazioni di runtime con limitazioni rigide devono essere inserite correttamente nella lista consentita in Android 10.

Autorizzazione MANAGE_DEVICE_ADMINS

Android 10 modifica l'autorizzazione MANAGE_DEVICE_ADMINS da firma o privilegiata a solo firma. Ciò significa che solo le app firmate dalla piattaforma possono impostare altre app come amministratore del dispositivo.

Miglioramenti dell'API Sharing

Android 10 offre una serie di nuove funzionalità dell'API Android Platform relative alla condivisione. Se hai modificato il codice del foglio di condivisione nell'implementazione, assicurati che la tua implementazione supporti queste nuove funzionalità. Se non hai modificato il codice del foglio di condivisione nell'implementazione, non devi fare nulla per supportare queste nuove funzionalità.

Runtime Android (ART)

Configurazione firmata

La funzionalità Configurazione firmata consente di incorporare la configurazione delle limitazioni dell'interfaccia non SDK negli APK. In questo modo è possibile rimuovere interfacce non SDK specifiche dalla blacklist, in modo che AndroidX possa utilizzarle in modo sicuro. Con questa modifica, AndroidX può aggiungere il supporto per nuove funzionalità su versioni precedenti di Android.

Prestazioni

Livello di astrazione Cgroup

Android 10 include un livello di astrazione cgroup e profili di attività, che gli sviluppatori possono utilizzare per descrivere un insieme di limitazioni da applicare a un thread o a un processo.

Daemon di eliminazione in caso di poca memoria (lmkd)

Android 10 supporta una nuova modalità lmkd che utilizza i monitor PSI (Kernel Pressure Stall Information) per il rilevamento della pressione della memoria.

Potenza

Gestione alimentazione della piattaforma

In Android 10, la modalità Doze può essere attivata sui dispositivi sempre attivi e su quelli alimentati a batteria.

Risparmio energetico di routine

Android 10 introduce una nuova opzione di pianificazione del risparmio energetico chiamata in base alla routine. Il risparmio energetico di routine consente a un'app scelta dall'OEM di fornire indicatori al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa da implementare.

Power stats HAL

In Android 10, IPowerStats.hal sostituisce le API di raccolta delle statistiche sul consumo energetico in IPower.hal. Anche se l'HAL di alimentazione supporta ancora le API, in futuro verrà eseguita la migrazione esclusiva all'HAL delle statistiche sull'alimentazione.

L'HAL delle statistiche sul consumo energetico include nuove API per supportare la raccolta di dati dalla misurazione del consumo energetico sul dispositivo, per i dispositivi supportati. Anche le API di raccolta delle statistiche sul consumo energetico esistenti vengono aggiornate per migliorare la flessibilità. I suggerimenti per il risparmio energetico Le API rimangono in Power HAL e non cambiano.

Mitigazione termica

Il framework termico di Android 10 astrae le interfacce del dispositivo per il sensore di temperatura del sottosistema termico, inclusi CPU, GPU, batteria, pelle e dispositivo di raffreddamento. Il framework introduce un'interfaccia di polling per eseguire query sullo stato termico per avviare la limitazione e un'interfaccia di callback per inviare un messaggio all'utente quando viene superata una soglia.

Android 10 fornisce i nuovi tipi di dati tramite l'interfaccia IThermalService utilizzando questi tre nuovi metodi:

Le app aggiungono e rimuovono listener e accedono allo stato della temperatura nella classe PowerManager. Solo un servizio di sistema attendibile, come un'API Android o un'API del produttore del dispositivo, può accedere alle informazioni sugli eventi causali associati. I produttori di dispositivi o di SoC devono implementare thermal HAL 2.0 per abilitare la funzionalità completa del nuovo framework termico.

Per un esempio di implementazione della mitigazione termica, consulta l'implementazione di riferimento.

Aggiornamenti

Formato file APEX

Android Pony EXpress (APEX) è un nuovo formato di container utilizzato nel flusso di installazione per i componenti di sistema modulari.

Partizioni dinamiche

Le partizioni dinamiche introducono un sistema di partizionamento dello spazio utente in Android, consentendo la creazione, il ridimensionamento o l'eliminazione delle partizioni durante gli aggiornamenti OTA. I produttori di dispositivi non devono preoccuparsi delle dimensioni individuali delle partizioni, come system, vendor e product. Viene invece allocata una partizione super di grandi dimensioni e le sottopartizioni possono essere dimensionate dinamicamente al suo interno.

Aggiornamenti di sistema dinamici

Gli aggiornamenti di sistema dinamici (DSU) ti consentono di creare un'immagine di sistema Android che gli utenti possono scaricare da internet e provare senza il rischio di danneggiare l'immagine di sistema attuale.

Backup e ripristino multiutente

Android 10 supporta la funzionalità di backup e ripristino per tutti gli utenti di un dispositivo. In precedenza, il backup e ripristino era disponibile solo per l'utente di sistema. Il backup e il ripristino per gli utenti non di sistema sono disattivati per impostazione predefinita, in quanto hanno una copertura solo parziale per impostazioni, sfondi e componenti di sistema.

Overlayfs

Gli utenti che lavorano con build userdebug o eng si aspettano di poter rimontare in modo efficiente la partizione di sistema come lettura/scrittura e quindi aggiungere o modificare un numero qualsiasi di file senza eseguire nuovamente il flash dell'immagine di sistema. Puoi utilizzare Overlayfs, che configura automaticamente l'archiviazione di backup per un file system scrivibile come riferimento superiore e lo monta su quello inferiore. Queste azioni si verificano nelle richieste adb disable-verity e adb remount. Per maggiori dettagli, consulta il file README di Overlayfs in AOSP.

Supporto della libreria condivisa in modalità di ripristino

In Android 10, le librerie condivise sono disponibili nella partizione di ripristino, il che elimina la necessità che tutti gli eseguibili della modalità di ripristino siano statici. Le librerie condivise si trovano nella directory /system/lib (o /system/lib64 per i dispositivi a 64 bit) nella partizione.

Per aggiungere una nuova libreria condivisa alla partizione di ripristino, aggiungi recovery_available: true o recovery: true a Android.bp della libreria condivisa. Il primo installa la libreria sia nella partizione di sistema sia in quella di ripristino, mentre il secondo la installa solo nella partizione di ripristino.

Il supporto della libreria condivisa non può essere creato con il sistema di build basato su make di Android. Per convertire un eseguibile statico esistente per la modalità di ripristino in uno dinamico, rimuovi LOCAL_FORCE_STATIC_EXECUTABLE := true in Android.mk o static_executable: true (in Android.bp).

Checkpoint dei dati utente (UDC)

Android 10 introduce la funzionalità User Data Checkpoint (UDC), che consente ad Android di eseguire il rollback allo stato precedente quando un aggiornamento over-the-air (OTA) di Android non va a buon fine.