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:
- Android Runtime
- Conscrypt
- Resolver DNS
- DocumentsUI
- ExtServices
- Media
- ModuleMetadata
- Networking
- PermissionController
- Time Zone Data
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 tuofonts.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:
NfcAdapter.CreateBeamUrisCallback
NfcAdapter.CreateNdefMessageCallback
NfcAdapter.OnNdefPushCompleteCallback
Metodi:
createBeamUris
invokeBeam
isNdefPushEnabled
setBeamPushUris
setBeamPushUrisCallback
setNdefPushMessage
setNdefPushMessageCallback
setOnNdefPushCompleteCallback
createNdefMessageCallback
onNdefPushCompleteCallback
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:
- Panoramica
- AHardwareBuffer
- Esecuzioni burst e code di messaggi veloci
- Memorizzazione nella cache della compilazione
- Rilevamento e assegnazione dei dispositivi
- Estensioni fornitore
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:
getCurrentThermalStatus()
restituisce lo stato termico attuale del dispositivo come numero intero, a meno che il dispositivo non sia in fase di throttling.addThermalStatusListener()
aggiunge un ascoltatore.removeThermalStatusListener()
rimuove un ascoltatore aggiunto in precedenza.
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.