Questa pagina riassume le funzionalità principali della release Android 10 e fornisce link a informazioni aggiuntive. Questi riepiloghi delle funzionalità sono organizzati in base alla posizione della documentazione della funzionalità su questo sito.
Crea
java_sdk_library
Android 10 introduce
java_sdk_library
, una nuova regola di compilazione per risolvere i problemi di compatibilità delle 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:
- Android Runtime
- Conscrypt
- Resolver DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Dati sul fuso orario
Hardware Abstraction Layer (HAL)
Android 10 aggiunge il supporto per l'arresto automatico degli HAL quando non hanno client.
Scoppiettio
ABI
Android 10 include il supporto di nuove utility di monitoraggio ABI per confrontare, monitorare e attenuare le modifiche all'ABI del kernel che influiscono sulla compatibilità con i moduli del kernel.
Android 10 introduce anche un strumento di controllo degli utilizzi dell'ABI basato sui simboli. Il programma di controllo può rilevare i binari precompilati obsoleti in fase di compilazione, in modo che gli sviluppatori delle librerie condivise possano sapere quali binari precompilati potrebbero essere danneggiati dalla modifica e quali devono essere ricostruiti.
Daemon Live-Lock di Android
Android 10 include il daemon Android Live-Lock (llkd), che è progettato per rilevare e attenuare i deadlock del kernel.
vDSO32 su ARM64
Android 10 supporta l'utilizzo di vDSO32 su 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 precedenza
Android 10 richiede ai dispositivi di specificare voci fstab
per le partizioni montate in anticipo utilizzando un file fstab
nel ramdisk di primo livello.
HIDL
Offload BroadcastQueue
Android 10 include un nuovo offload BroadcastQueue
alle code in background e in primo piano esistenti. La coda di offload 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 agli utenti, la coda di offload gestisce la trasmissione BOOT_COMPLETED
, che molte app ascoltano e che può richiedere molto tempo per essere completata.
Al momento la coda di offload gestisce solo la trasmissione BOOT_COMPLETED
, ma può potenzialmente 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 al contempo i vantaggi dell'infrastruttura HIDL di Android.
safe_union in HIDL
Android 10 introduce
safe_union
, un tipo union con tagging 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 sostituisce l'HAL con le proprietà di sistema.
API Schema file di configurazione
La piattaforma Android contiene un numero elevato di file XML per l'archiviazione dei dati di configurazione. Molti dei 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 e, pertanto, deve essere specificato esplicitamente e deve evolversi 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 tra le 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 interfaccia fornitore (VINTF)
VINTF
Le modifiche a VINTF in Android 10 includono:
- Ritiro dei tag versione AVB
- Aggiunta di informazioni sul kernel nei pacchetti OTA
- Creazione ufficiale dei manifest ODM
- Aggiunta di una matrice di compatibilità dei prodotti
- Associare un elemento manifest a un modulo HAL nel sistema di compilazione
Bootloader
Ramdisk
In Android 10, il
file system principale non è più incluso in ramdisk.img
, ma viene unito a system.img
.
Crea partizioni ODM
Android 10 include il supporto per la creazione di partizioni odm
tramite il sistema di compilazione Android. Puoi utilizzare una partizione /odm
separata per le personalizzazioni, che ti consente di utilizzare una singola immagine del fornitore per più SKU hardware. In questo modo, i produttori di design originali (ODM) possono personalizzare i pacchetti di supporto della scheda (BSP) dei fornitori di system on a chip (SoC) in base ai propri dispositivi (le loro schede). Possono implementare moduli del kernel per componenti specifici della scheda, demoni specifici della scheda o le proprie funzionalità su livelli di astrazione hardware (HAL). Possono anche sostituire o personalizzare i componenti 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 memorizzare l'immagine del blob dell'albero del dispositivo (DTB). I test VTS di Android 10 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 nelle 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 in overlay. I produttori di dispositivi possono utilizzare DeviceTree o ACPI (Advanced Configuration and Power Interface) 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 il linguaggio Android Interface Definition Language (AIDL) stabile, un nuovo modo per tenere traccia dell'API (interfaccia di programmazione di un'applicazione)/dell'ABI (interfaccia binaria di un'applicazione) fornite dalle interfacce AIDL.
Spostare fastboot nello spazio utente
Android 10 aggiunge il supporto per le partizioni ridimensionabili rilocando l'implementazione di fastboot dal bootloader allo spazio utente.
Display
Riproduzione di video HDR
Android 10 supporta la riproduzione di 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 nell'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 per il rendering dei caratteri Zawgyi
Zawgyi è il carattere più utilizzato in Myanmar. Android 9 e versioni precedenti non supportavano il rendering di Zawgyi perché non è conforme a Unicode. Android 10 risolve il problema includendo un carattere Unicode capable di visualizzare sia il birmano Unicode sia Zawgyi. Non è richiesta alcuna attività di implementazione per supportare il rendering dei caratteri 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 lingua
my-qaag
infonts.xml
. Per ulteriori informazioni, consulta le note di rilascio di Unicode CLDR su Zawgyi (Qaag).
Limitazioni per nascondere le icone delle app
Android 10 limita la possibilità per le app di nascondere le proprie icone del programma di avvio. Se per un'app non è attivata un'attività di Avvio app, il sistema visualizza un'attività sintetizzata nel programma di avvio. Questa attività sintetizzata rappresenta la pagina dei dettagli dell'app nelle impostazioni di sistema.
Per ulteriori informazioni 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 all'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 hai elementi dell'interfaccia utente che scadono sul tuo dispositivo, utilizza l'API timeouts su di essi. Per ulteriori informazioni, consulta le linee guida sull'accessibilità per gli sviluppatori Android.
Compatibilità
Android Compatibility Definition Document (CDD)
Il Compatibility Definition Document (CDD) di Android 10 si basa sulle versioni precedenti con aggiornamenti per le 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 distinta pagina delle note di rilascio che elenca molte modifiche importanti per Android 10.
Download 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 denominato CtsShimApex
,
che deve essere preinstallato su un dispositivo per scrivere i test CTS per la gestione di APEX.
Modalità test harness
La modalità del test harness CTS consente agli sviluppatori di 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 che viene installato l'APK di test come app istantanea ed eseguiti i test.
Oltre a una modalità CTS per le app istantanee, Android 10 include CTS Verifier per le app istantanee
Test CTS Verifier pro audio
Android 10 aggiunge un test di CTS Verifier per la conformità a 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 del dispositivo MIDI virtuale.
Interpretazione del test CTS
Android 10 aggiorna il meccanismo per interpretare i 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 passa dal tipo di build userdebug a user, poiché la GSI è firmata. Tuttavia, il comando adb root
che assegna a un utente le autorizzazioni di accesso come amministratore al dispositivo Android in test non è disponibile in una compilazione per utente. Questo è un problema perché VTS richiede l'esecuzione di adb root
.
Il ramdisk di debug viene introdotto per rendere possibileadb root
, se il dispositivo è sbloccato. In questo modo, il flusso di test viene semplificato riutilizzando la stessa build utente system.img
(GSI o dell'OEMsystem.img
).
Convalida di Composer hardware
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…
Caricare librerie condivise con caricatori di classi diversi
In Android 9 e versioni precedenti, le app caricavano le librerie condivise Java collegate nel caricatore delle classi dell'app. In Android 10, il framework utilizza un caricatore delle classi 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, pertanto questa variazione non dovrebbe interrompere il comportamento delle app. Tuttavia, se un'app si basa sull'utilizzo di un singolo caricatore di classi, questo comportamento non funziona. Inoltre, la visibilità private del pacchetto delle classi nello stesso pacchetto è ancora supportata, ma non nelle librerie condivise.
I produttori di dispositivi potrebbero riscontrare problemi di compatibilità delle app durante il test dei propri 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 volti consente agli utenti di sbloccare il dispositivo semplicemente guardando la parte anteriore del dispositivo. Android 10 aggiunge il supporto per una nuova serie di comandi per l'autenticazione tramite il volto che può elaborare in sicurezza i frame della fotocamera, garantendo sicurezza e privacy durante l'autenticazione tramite il volto sull'hardware supportato. Android 10 offre inoltre un modo semplice per le implementazioni conformi alla sicurezza di attivare l'integrazione delle app per transazioni come banking online o altri servizi.
Accesso esteso
Gli agenti di attendibilità, il meccanismo di base utilizzato dai meccanismi di autenticazione terzi come Smart Lock, possono estendere lo sblocco solo in Android 10. Gli agenti di attendibilità non possono più sbloccare un dispositivo bloccato e possono mantenere sbloccato un dispositivo 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 lo strumento di contenimento dei limiti di UBSan. Questa mitigazione è attivata a livello di modulo. Contribuisce a mantenere al sicuro 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 per overflow di numeri interi
Android 10 attiva la sanificazione degli overflow di interi (IntSan) nei codec software. Assicurati che le prestazioni di riproduzione siano accettabili per tutti i codec che non sono supportati nell'hardware del dispositivo. IntSan è abilitato nei seguenti codec:
libFLAC
libavcdec
libavcenc
libhevcdec
libmpeg2
libopus
libvpx
libspeexresampler
libvorbisidec
Memoria di sola esecuzione
Per impostazione predefinita, le sezioni di codice eseguibile per i binari di sistema AArch64 sono contrassegnate come di sola esecuzione (non leggibili) come misura di mitigazione del rafforzamento contro gli attacchi di riutilizzo del codice just-in-time. Il codice che mescola dati e codice e il codice che esamina intenzionalmente queste sezioni (senza prima rimappare i segmenti di memoria come leggibili) non funziona più. Le app con SDK target Android 10 (livello API 29 o successivo) sono interessate se tentano di leggere sezioni di codice delle librerie di sistema con memoria di sola esecuzione (XOM) abilitata in memoria senza prima contrassegnarle come leggibili.
Scudo
Scudo è un allocatore di memoria dinamico in modalità utente 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) è un
strumento LLVM
modo 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 a foglia e caricando l'indirizzo di ritorno dall'istanza ShadowCallStack
nel 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 dell'HAL e del sottosistema 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 dei criteri audio per offrire maggiore flessibilità per supportare casi d'uso complessi nel settore auto e motori.
Audio ad alta risoluzione
Android 10 include i seguenti miglioramenti per l'audio ad alta risoluzione.
- Supporto per il galleggiamento
- Supporto della frequenza di 192 kHz
- Supporto di otto canali
- Inclusione di informazioni sui tempi
Acquisizione simultanea
Android 10 migliora l'esperienza utente della registrazione simultanea, che richiede più di una registrazione audio attiva contemporaneamente.
AudioPlaybackCapture
Android 10 contiene una nuova API chiamata
AudioPlaybackCapture
, che consente alle app di copiare l'audio riprodotto da altre app. Questa funzionalità è simile alla cattura 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 di cui viene acquisito l'audio.
MIDI
Android 10 semplifica il porting di app audio professionali che utilizzano MIDI alla piattaforma Android utilizzando l'API NDK AMidi
.
Fotocamera
Per un riepilogo delle modifiche all'API, all'HAL e al modulo della fotocamera introdotte in Android 10, consulta Aggiornamenti della fotocamera di Android 10.
Miglioramenti alla privacy del framework della videocamera
Android 10 introduce miglioramenti alla privacy nel
framework della fotocamera. Per evitare di esporre informazioni potenzialmente sensibili delle fotocamere statiche in CameraCharacteristics
senza il consenso dell'utente, le app devono ottenere l'autorizzazione per recuperare i metadati statici con un tag sensibile alla privacy utilizzando il metodo getCameraCharacteristics
.CAMERA
Per ottenere un elenco delle chiavi delle caratteristiche della fotocamera che richiedono l'autorizzazione CAMERA
, chiama il metodo
getKeysNeedingPermission
.
Query di ricofigurazione della sessione
Android 10 aggiunge una funzionalità di query di ricofigurazione della sessione che consente di migliorare le prestazioni grazie a un maggiore controllo sulla logica di ricofigurazione dei parametri della sessione interna.
API di gestione del buffer HAL3 della fotocamera
Android 10 introduce opzionali API di gestione dei buffer HAL3 della fotocamera che consentono di implementare la logica di gestione dei buffer per ottenere diversi compromessi tra memoria e latenza di acquisizione nelle implementazioni HAL della fotocamera.
Interruttore fisico della fotocamera dinamico HAL della fotocamera
Android 10 introduce un tag metadati dinamico,ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
,
che indica la fotocamera fisica sottostante attiva di un dispositivo con fotocamera logica. Per ulteriori informazioni, consulta
Supporto di più videocamere.
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 maggiori dettagli, consulta Supporto di più fotocamere.
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 semplificare l'utilizzo delle interfacce HIDL, Android 10 introduce anche una libreria disponibile per i fornitori, libcamera2_vendor
. Questa libreria è simile alla
libreria NDK della fotocamera,
con alcune piccole modifiche.
Configurazioni degli stream
Android 10 aggiunge funzionalità che consentono ai fornitori di videocamere di promuovere gli stream delle videocamere consigliati ai clienti e di supportare un'API per eseguire query sulle combinazioni di stream.
Requisiti per la combinazione di stream della videocamera
I dispositivi con Android 10 non sono più tenuti a supportare le combinazioni di stream con stream di videocamere secondarie fisiche. Tuttavia, i dispositivi con Android 10 e la versione del dispositivo HAL della fotocamera 3.5 devono supportare isStreamCombinationSupported()
per consentire alle app di eseguire query per verificare se è supportata una combinazione di stream contenente stream fisici.
Per ulteriori informazioni, consulta Supporto di più videocamere.
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à delle immagini migliorata e dimensioni inferiori rispetto alle immagini JPEG. I dispositivi devono avere un codificatore HEIC o HEVC per supportare le immagini HEIF.
Fotocamere monocromatiche
Android 10 offre un supporto aggiuntivo per il formato dello stream Y8, i metadati statici dell'array di filtri a colori monocromatici e a infrarossi vicini (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 migliorato per le chiamate di emergenza. In caso di emergenza, i dispositivi con supporto per 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 di chiamata di gruppo
Le API di chiamata 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 con trasmissione cellulare interagendo con i pacchetti middleware eMBMS. Per funzionare correttamente, le chiamate di gruppo richiedono il supporto del fornitore del chipset, del fornitore di middleware e dell'operatore di telefonia cellulare. La documentazione per gli sviluppatori è disponibile all'indirizzo developer.google.com.
Funzionalità della SIM remota
Android 10 introduce funzionalità di SIM remota che consentono alle app di messaggistica su un dispositivo host Android di inviare messaggi SMS tramite smartphone utilizzando meccanismi come il Bluetooth. Per ulteriori informazioni, 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 con Android 10 che supportano le eSIM, è necessario definire un array di ID slot eUICC non rimovibili. I dispositivi devono inoltre supportare IRadio HAL v1.4 e IRadioConfig HAL v1.2. Per ulteriori informazioni, consulta la sezione Implementazione dell'eSIM e i requisiti HAL.
5G non autonomo (NSA)
Android 10 aggiunge il supporto per il 5G non autonomo (NSA). 5G NSA è una soluzione per le reti 5G supportate da un'infrastruttura 4G esistente. Su Android 10, i dispositivi possono mostrare un'icona 5G nella barra di stato quando si connettono a una rete 5G.
Suggerimento per l'account telefonico
Android 10 introduce il servizio di suggerimenti per gli account telefonici, che consente di mostrare agli utenti suggerimenti per gli account telefonici quando effettuano una chiamata.
Operatore
Eseguire la migrazione delle impostazioni della rete mobile
Android 10 ha ridisegnato il codice UI delle impostazioni della rete mobile e lo ha spostato dallo stack di telefonia allo stack delle impostazioni. Per supportare il codice sottoposto a migrazione, 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 permanenti (IMEI/MEID, IMSI e numero di serie della build) sono protetti da un'autorizzazione privilegiata con accesso concesso anche alle app di proprietà del dispositivo e del profilo. Poiché l'IMSI e il numero di serie della SIM sono forniti dall'operatore, l'accesso a questi identificatori è concesso ai pacchetti con privilegi dell'operatore.
Wi-Fi
Selezione rete
Android valuta continuamente la qualità della rete connessa e la qualità delle reti disponibili. Android 10 ha aggiornato gli algoritmi e le procedure per la selezione e il passaggio da una rete Wi-Fi all'altra.
Scansione per l'offload della rete preferita Wi-Fi
Android 10 introduce un metodo API facoltativo denominato
setDeviceMobilityState()
in WifiManager
che aumenta l'intervallo tra le ricerche di
offload della rete preferita (PNO)
quando il dispositivo è fermo per ridurre il consumo di energia.
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 del dispositivo (DPP) introdotto dalla Wi-Fi Alliance (WFA), per eseguire il provisioning e configurare i dispositivi Wi-Fi.
Modalità Wi-Fi a bassa latenza
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 servizio ombrello "Server IP", dnsmasq
è in fase di eliminazione. Android 10 sostituisce l'utilizzo 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 la possibilità di aggiornamento del server DHCP. Per maggiori dettagli, consulta
packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java
.
Non è richiesta alcuna azione per implementare questa modifica: tutti i dispositivi che eseguono l'upgrade ad Android 10 e che lo rilasciano utilizzano DhcpServer
per impostazione predefinita.
Se hai apportato personalizzazioni al 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 inviata in upstream.
WPA3 e Enhanced Open Wi-Fi
Android 10 aggiunge il supporto per gli standard di sicurezza Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open per offrire una maggiore 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 tra loro direttamente utilizzando il protocollo Wi-Fi Direct senza accesso a internet o alla rete mobile.
Miglioramenti alla randomizzazione MAC
Da Android 10, la randomizzazione MAC è attivata per default per la modalità client, SoftAP e Wi-Fi Direct. I dispositivi devono fornire un'opzione per attivare o disattivare la randomizzazione 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
La tecnologia 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 NFC sicuro per una maggiore sicurezza.
Android Beam non più supportato
In Android 10, Android Beam non è più necessario e le seguenti interfacce e metodi sono stati ritirati.
Interfacce:
NfcAdapter.CreateBeamUrisCallback
NfcAdapter.CreateNdefMessageCallback
NfcAdapter.OnNdefPushCompleteCallback
Metodi:
createBeamUris
invokeBeam
isNdefPushEnabled
setBeamPushUris
setBeamPushUrisCallback
setNdefPushMessage
setNdefPushMessageCallback
setOnNdefPushCompleteCallback
createNdefMessageCallback
onNdefPushCompleteCallback
Per utilizzare Android Beam, registra la costante della funzionalità android.sofware.nfc.beam
.
Grafica
ASurfaceControl
Android 10 aggiunge
ASurfaceControl
, un nuovo modo per
SurfaceFlinger
di accettare buffer.
Implementazione grafica
Livelli OpenGL ES
Android 10 introduce un sistema di livelli per GLES.
EGL 1.5
Android 10 implementa l'interfaccia EGL 1.5. Per informazioni sulle nuove funzionalità di EGL 1.5, consulta la specifica EGL 1.5 rilasciata da Khronos.
Vulkan
Android 10 include il supporto della 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 della swapchain.
Frequenza di aggiornamento delle prestazioni
Android 10 aggiunge il supporto di una frequenza di aggiornamento delle prestazioni. Questa funzionalità è disattivata per impostazione predefinita.
Interazione
Automotive
Audio per auto e motori
In Android 10, il contesto HAL audio viene mappato a
AudioAttributes.usage
per identificare i suoni. Android supporta un'istanzaAUDIO_DEVICE_OUT_BUS
per contesto. L'HAL IAudioControl
fornisce
estensioni specifiche per i veicoli 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 l'utilizzo di questa funzionalità, consulta la pagina Navigazione gestuale 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 Neural networks.
Documentazione nuova e aggiornata sulle reti neurali per Android 10:
- Panoramica
- AHardwareBuffer
- Esecuzioni in batch e code di messaggi rapide
- Memorizzazione nella cache della compilazione
- Rilevamento e assegnazione dei dispositivi
- Estensioni del fornitore
Sensori
Sensori HAL 2.0
Sensors HAL 2.0 supporta l'utilizzo di code di coda dei messaggi rapidi (FMQ) per inviare eventi del sensore dall'HAL al framework Android Sensors.
Sensori disattivati
Android 10 include un'impostazione per gli sviluppatori per spegnere tutti i sensori su un dispositivo. Questa funzionalità aiuta gli sviluppatori a testare la funzionalità della loro app in situazioni in cui i sensori non sono disponibili e offre anche agli utenti un modo per controllarli sul proprio dispositivo.
Se i tuoi dispositivi utilizzano l'implementazione predefinita di SensorService
,
CameraService
e AudioPolicyService
, non è necessaria alcuna personalizzazione aggiuntiva per il 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 di actualizare componenti di sistema modulari relativi ai contenuti multimediali tramite l'infrastruttura del Google Play Store o tramite un meccanismo over-the-air 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 software AV1.
Autorizzazioni
Android 10 offre configurazioni di autorizzazioni aggiuntive per la trasparenza e la privacy degli utenti.
Informazioni sul fornitore di contatti e sulle affinità
A partire da Android 10, i dati correlati all'affinità dei contatti, gestiti dal componente Provider di contatti, vengono recuperati in modo diverso rispetto ad Android 9 e versioni precedenti. Queste modifiche relative all'accessibilità dei dati migliorano la privacy degli utenti su tutti i dispositivi Android 10 che utilizzano il componente Provider di contatti. Il database sottostante non contiene più dati sulle affinità dei contatti. Pertanto, le app non possono scrivere o leggere da questo spazio.
Le modifiche in Android 10 dovrebbero avere un impatto significativo sulle API. Se le tue app si basano sulle funzionalità ritirate menzionate in fornitore di contatti e informazioni sulle affinità, ti consigliamo di aggiornarle per compensare eventuali modifiche. Inoltre, se utilizzi una versione forcata del fornitore di contatti, devi aggiornarlo.
Autorizzazioni di accesso alla posizione di tipo Tristate
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 alla posizione del loro dispositivo.
Promemoria per l'accesso alla posizione in background
Android 10 include un promemoria sulla posizione per l'accesso in background, che aumenta la trasparenza sul livello di accesso delle app alla posizione di un dispositivo e aiuta gli utenti a mantenere il controllo su questo accesso.
Limitare le località opportunistiche
Quando un'app richiede la posizione di un dispositivo, può attendere la risposta alla richiesta o, utilizzando gli ascoltatori della posizione attivi, ricevere un aggiornamento opportunistico della posizione. 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 elimina i popup degli annunci e i takeover dannosi. Non è richiesta alcuna azione per attivarla.
Sandboxing delle app
In Android 10, le app hanno una visualizzazione non elaborata limitata del
sistema file, senza accesso diretto a percorsi come /sdcard/DCIM
. Tuttavia, le app mantengono l'accesso completo ai percorsi specifici del pacchetto, come restituito da eventuali metodi applicabili come Context.getExternalFilesDir()
.
Le app hanno comunque accesso completo ai percorsi non elaborati dei relativi pacchetti.
Utilizza le linee guida per la condivisione dei file della sandbox dell'app per fornire una granularità appropriata della condivisione dei dati.
Limitare l'accesso agli appunti delle app
In Android 10, l'accesso alla clipboard è cambiato in modo che i contenuti della clipboard non possano essere visualizzati chiamando ClipboardManager.getPrimaryClip
o aggiungendo un ascoltatore onPrimaryClipChangedListener
per la notifica quando la clipboard cambia. In questo modo, viene incrementata la privacy dell'utente e le app di malware pubblicitario non possono modificare la clipboard.
In Android 10, l'accesso in lettura è consentito solo all'app corrente con lo stato attivo di immissione o alla tastiera corrente. La chiamata dell'ascoltatore
ClipboardManager.onPrimaryClipChanged()
ora viene attivata solo per le app che soddisfano queste limitazioni.
ClipboardManager.getPrimaryClip
e ClipboardManager.getPrimaryClipDescription
restituire null
se l'app richiedente non è l'editor del metodo di inserimento (IME) predefinito o non ha il focus di immissione.
Le autorizzazioni di runtime includono il riconoscimento attività
Ora gli utenti visualizzano una finestra di dialogo di riconoscimento delle 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 amministratori del dispositivo.
Miglioramenti all'API Sharing
Android 10 offre una serie di nuove funzionalità dell'API Android Platform relative alla condivisione. Se hai modificato il codice della scheda di condivisione nell'implementazione, assicurati che supporti queste nuove funzionalità. Se non hai modificato il codice di Scheda condivisa nella tua 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 relative alle interfacce non SDK negli APK. In questo modo è possibile rimuovere interfacce non SDK specifiche dalla lista nera, in modo che AndroidX possa utilizzarle in sicurezza. Con questa modifica, AndroidX può aggiungere il supporto di 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 Low Memory Killer (lmkd)
Android 10 supporta una nuova
modalità lmkd
che utilizza i monitor di informazioni sulla interruzione della pressione del kernel (PSI) per il rilevamento della pressione della memoria.
Potenza
Gestione dell'alimentazione della piattaforma
In Android 10, la modalità Sospensione può essere attivata sui dispositivi con display sempre attivo e su quelli alimentati a batteria.
Risparmio energetico automatico
Android 10 introduce una nuova opzione di programmazione 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 programmazione più intelligente del risparmio energetico. Questa opzione richiede la configurazione ed è facoltativa da implementare.
HAL Power Stats
In Android 10,
IPowerStats.hal
sostituisce le API di raccolta delle statistiche di alimentazione in
IPower.hal
.
Sebbene l'HAL di alimentazione supporti ancora le API, in futuro verrà eseguita la migrazione esclusivamente all'HAL delle statistiche di alimentazione.
L'HAL delle statistiche di alimentazione include nuove API per supportare la raccolta dei dati dalla misurazione dell'alimentazione sul dispositivo, per i dispositivi supportati. Anche le API di raccolta delle statistiche di potenza esistenti sono state aggiornate per migliorare la flessibilità. Le API di suggerimenti di potenza rimangono nell'HAL di potenza e non cambiano.
Mitigazione termica
Il framework termico in Android 10 esegue l'astrazione delle interfacce del dispositivo per il sensore di temperatura del sottosistema termico, tra cui CPU, GPU, batteria, pelle e dispositivo di raffreddamento. Il framework introduce un'interfaccia di polling per eseguire query sullo stato termico al fine di 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:
getCurrentThermalStatus()
restituisce lo stato termico corrente del dispositivo come numero intero, a meno che il dispositivo non sia sottoposto a throttling.addThermalStatusListener()
aggiunge un ascoltatore.removeThermalStatusListener()
rimuove un ascoltatore aggiunto in precedenza.
Le app aggiungono e rimuovono ascoltatori e accedono allo stato della temperatura nella classe
PowerManager
. Solo un servizio di sistema attendibile, ad esempio 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 attivare la funzionalità completa del nuovo framework termico.
Per un esempio di implementazione della mitigazione termica, consulta la implementazione di riferimento.
Aggiornamenti
Formato file APEX
Android Pony EXpress (APEX) è un nuovo formato contenitore utilizzato nel flusso di installazione per i componenti di sistema modulari.
Partizioni dinamiche
Le partizioni dinamiche introducono in Android un sistema di partizione dello spazio utente, che consente di creare, ridimensionare o eliminare le partizioni durante gli aggiornamenti OTA. I produttori di dispositivi non devono preoccuparsi delle singole dimensioni delle partizioni, ad esempio system
, vendor
e
product
. Viene allocata una grande partizione super
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 corrente.
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 il ripristino erano disponibili 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 parziale per impostazioni, sfondo e componenti di sistema.
Overlayfs
Gli utenti che utilizzano le build userdebug
o eng
si aspettano di poter montare in modo efficiente la partizione di sistema come in lettura/scrittura e quindi aggiungere o modificare un numero qualsiasi di file senza eseguire il reflash dell'immagine di sistema. Puoi utilizzare Overlayfs
, che configura automaticamente lo spazio di archiviazione di riserva per un file system scrivibile come riferimento superiore e si monta sopra 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 recupero
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 recupero, mentre il secondo la installa solo nella partizione di recupero.
Il supporto delle librerie condivise non può essere creato con il sistema di compilazione basato su make di Android.
Per convertire un file eseguibile statico esistente per la modalità di recupero in uno dinamico,rimuovi LOCAL_FORCE_STATIC_EXECUTABLE := true
in Android.mk
ostatic_executable: true
(in Android.bp
).
Checkpoint dei dati utente (UDC)
Android 10 introduce la funzionalità di controllo dei dati utente (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.