Note sulla versione di Android 10

Questa pagina riepiloga le principali funzionalità della versione Android 10 e fornisce collegamenti a informazioni aggiuntive. Questi riepiloghi delle funzionalità sono organizzati in base alla posizione della documentazione della funzionalità su questo sito.

Costruire

java_sdk_library

Android 10 introduce java_sdk_library , una nuova regola di build per risolvere 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 loro di essere aggiornati al di fuori del normale ciclo di rilascio di Android. Alcuni moduli includono:

Livello di astrazione hardware (HAL)

Android 10 aggiunge il supporto per l' arresto automatico degli HAL quando non hanno client.

Nocciolo

ABI

Android 10 include il supporto per le nuove utilità di monitoraggio ABI per aiutare a confrontare, monitorare e mitigare le modifiche ABI del kernel che influiscono sulla compatibilità con i moduli del kernel.

Android 10 introduce anche un controllo degli utilizzi ABI basato su simboli. Il controllo può rilevare i file binari precompilati obsoleti in fase di compilazione, in modo che gli sviluppatori di librerie condivise possano sapere quali file binari precompilati potrebbero essere danneggiati dalla modifica e quali file binari precompilati devono essere ricompilati.

Demone Android Live-Lock

Android 10 include Android Live-Lock Daemon (llkd) , progettato per individuare e mitigare i deadlock del kernel.

vDSO32 su ARM64

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

voci fstab per le prime partizioni montate

Android 10 richiede che i dispositivi specifichino le voci fstab per le partizioni montate in precedenza utilizzando un file fstab nel ramdisk della prima fase.

HIDL

Scarica BroadcastQueue

Android 10 include una nuova BroadcastQueue di offload sulle code esistenti in background e in primo piano . La coda di offload ha la stessa priorità e comportamento di timeout della coda in background. Per evitare di bloccare la coda in background, dove possono verificarsi trasmissioni più interessanti o visibili all'utente, la coda di offload gestisce la trasmissione BOOT_COMPLETED , che molte app ascoltano e può richiedere molto tempo per essere completata. La coda di offload attualmente 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 SystemSuspend HIDL . Questa implementazione offre funzionalità equivalenti alle versioni precedenti sfruttando al tempo stesso i vantaggi dell'infrastruttura HIDL di Android.

safe_union nell'HIDL

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

Configurazione

HAL del negozio di configurazione

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

API dello schema del file di configurazione

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 e pertanto lo schema 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 Config File Schema API .

Proprietà di sistema come API

Le proprietà di sistema a cui si accede attraverso 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 dell'interfaccia del fornitore (VINTF).

VINTF

Le modifiche a VINTF in Android 10 includono:

  • Tag di versione AVB deprecati
  • Aggiunta di informazioni sul kernel nei pacchetti OTA
  • La creazione di ODM si manifesta ufficialmente
  • Aggiunta di una matrice di compatibilità del prodotto
  • Associazione di una voce manifest a un modulo HAL nel sistema di compilazione

Boot loader

Ramdisk

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

Costruisci partizioni ODM

Android 10 include il supporto per la creazione di partizioni odm utilizzando il sistema di build Android. È possibile utilizzare una partizione /odm separata per le personalizzazioni, che consente di utilizzare un'unica immagine del fornitore per più SKU hardware. Ciò consente ai produttori di progetti originali (ODM) di personalizzare i pacchetti di supporto delle schede (BSP) dei fornitori System-on-chip (SoC) per i loro dispositivi specifici (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 archiviare l'immagine del BLOB dell'albero del dispositivo (DTB). I test VTS di Android 10 verificano che tutti i dispositivi avviati con Android 10 utilizzino l'intestazione dell'immagine di avvio versione 2 e includano un'immagine DTB valida come parte delle immagini di avvio/ripristino.

Immagini di ripristino per dispositivi non A/B

In Android 9 e versioni successive, l' immagine di ripristino di un dispositivo deve contenere informazioni dall'immagine sovrapposta . 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é DeviceTree BLOB for Overlay (DTBO).

AIDL stabile

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

Sposta fastboot nello spazio utente

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

Schermo

Riproduzione video HDR

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

Classificazione del testo

La classificazione del testo utilizza tecniche di apprendimento automatico 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 e il metodo detectLanguage rileva la lingua del testo.

Supporto per il rendering dei caratteri Zawgyi

Zawgyi è il carattere più popolare in Myanmar. Android 9 e versioni precedenti non supportavano il rendering di Zawgyi perché non è compatibile con Unicode . Android 10 risolve questo problema includendo un carattere Unicode in grado di riprodurre insieme sia il birmano Unicode che lo Zawgyi. Non è necessario alcun lavoro di implementazione per supportare il rendering dei caratteri Zawgyi sui dispositivi avviati con Android 10. Se i tuoi dispositivi hanno un'implementazione personalizzata per supportare Zawgyi, puoi:

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

Limitazioni al nascondere le icone delle app

Android 10 limita la possibilità per le app di nascondere le icone di avvio. Se per un'app non è abilitata un'attività di avvio, il sistema visualizza un'attività sintetizzata nel launcher; 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 delle app non vengono visualizzate, consulta la documentazione per 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 vengono fornite con Android 10. Se personalizzi le impostazioni, assicurati che questa funzionalità sia supportata. Se sono presenti elementi dell'interfaccia utente che vanno in timeout sul tuo dispositivo, utilizza l' API di timeout su tali elementi. Per ulteriori informazioni, consulta le linee guida sull'accessibilità per gli sviluppatori Android .

Compatibilità

Documento di definizione della compatibilità Android (CDD)

Il documento di definizione della compatibilità di Android 10 ripete le versioni precedenti con aggiornamenti per nuove funzionalità e modifiche ai requisiti per le funzionalità rilasciate in precedenza.

Test

Suite di test di compatibilità (CTS)

Android CTS ha una pagina separata 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 per i test inclusi può essere sincronizzato con il tag android-cts-10_r1 nell'albero open source.

Spessore CTS APEX

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

Prova la modalità cablaggio

La modalità test cablaggio CTS aiuta gli sviluppatori ad automatizzare i test per un dispositivo o una flotta di dispositivi.

Modalità App istantanee

A partire da Android 10, CTS funziona in modalità App istantanee , il che significa installare l'APK di prova 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 CTS Verifier

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

Test MIDI di CTS Verifier

In Android 10, il test MIDI 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 di interpretazione dei risultati CTS .

Suite di test del fornitore (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 da userdebug a tipo di build utente, perché GSI è firmato con la versione. Tuttavia, il comando adb root che fornisce a un host le autorizzazioni root per il dispositivo Android sottoposto a test non è disponibile nella build dell'utente. Questo è un problema perché VTS richiede l'esecuzione di adb root .

Viene introdotto il ramdisk di debug per rendere possibile adb root , se il dispositivo è sbloccato. Ciò semplifica il flusso di test riutilizzando la stessa build utente system.img (GSI o system.img dell'OEM).

Convalida del compositore 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

Carica librerie condivise con caricatori di classi 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 caricatore di classi diverso rispetto al caricatore di classi dell'app per caricare le librerie condivise Java collegate tramite uses-library o uses-static-library .

In generale, le app non dovrebbero fare affidamento sull'uso di un caricatore di classi specifico, quindi questa modifica non dovrebbe interrompere il comportamento dell'app. Tuttavia, se un'app si basa sull'utilizzo di un singolo caricatore di classi, tale comportamento non funziona. Inoltre, la visibilità privata del pacchetto delle classi nello stesso pacchetto è ancora supportata, ma non è supportata nelle librerie condivise.

I produttori di dispositivi potrebbero riscontrare problemi di compatibilità delle app mentre testano i propri dispositivi con Android 10.

Caratteristiche di sicurezza

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

Autenticazione facciale

L'autenticazione facciale consente agli utenti di sbloccare il proprio dispositivo semplicemente guardando la parte anteriore del dispositivo. Android 10 aggiunge il supporto per un nuovo stack di autenticazione facciale in grado di elaborare in modo sicuro i fotogrammi della fotocamera, preservando sicurezza e privacy durante l'autenticazione facciale sull'hardware supportato. Android 10 fornisce inoltre un modo semplice per implementare implementazioni conformi alla sicurezza per consentire l'integrazione di app per transazioni come servizi bancari online o altri servizi.

Accesso esteso

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

Crittografia

OEMCrypto

Android 10 utilizza l'API OEMCrypto versione 15.

Test

Limiti disinfettante

Android 10 distribuisce BoundsSanitizer (BoundSan) in Bluetooth e codec. BoundSan utilizza il disinfettante per confini di UBSan. Questa mitigazione è abilitata a livello di modulo. Aiuta a mantenere sicuri i componenti critici di Android e non deve essere disabilitato. BoundSan è abilitato nei seguenti codec:

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

Sanificazione dell'overflow intero

Android 10 abilita Integer Overflow Sanitization (IntSan) nei codec software. Assicurati che le prestazioni di riproduzione siano accettabili per tutti i codec non supportati dall'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 file binari del sistema AArch64 sono contrassegnate come di sola esecuzione (non leggibili) come mitigazione rafforzata contro gli attacchi di riutilizzo del codice just-in-time. Il codice che mescola dati e codice insieme 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 di destinazione di Android 10 (livello API 29 o successivo) subiscono conseguenze se l'app tenta di leggere sezioni di codice delle librerie di sistema abilitate alla memoria di sola esecuzione (XOM) in memoria senza prima contrassegnare la sezione come leggibile.

Scudo

Scudo è un allocatore di memoria dinamico in modalità utente progettato per essere più resistente alle vulnerabilità legate 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 nonleaf e caricando l'indirizzo di ritorno dall'istanza ShadowCallStack in l'epilogo della funzione.

Audio

AudioHAL

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

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Vengono aggiunti ulteriori requisiti per l'HAL audio e l'implementazione del sottosistema.

Effetti della preelaborazione

Android fornisce effetti di preelaborazione , come la cancellazione dell'eco acustico, il controllo automatico del guadagno e la soppressione del rumore. Android 10 include nuovi requisiti per l'acquisizione con VOICE_COMMUNICATION .

Gestore delle norme audio

Android 10 include un significativo refactoring del gestore delle policy audio per fornire maggiore flessibilità e supportare casi d'uso automobilistici complessi.

Audio ad alta risoluzione

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

  • Supporto galleggiante
  • Supporto di frequenza 192 KHz
  • Supporto a otto canali
  • Inclusione di informazioni sui tempi

Cattura simultanea

Android 10 migliora l'esperienza utente di acquisizione simultanea che richiede che venga eseguita più di un'acquisizione audio attiva contemporaneamente.

Acquisizione riproduzione audio

Android 10 contiene una nuova API chiamata AudioPlaybackCapture , che offre alle app la possibilità di copiare l'audio riprodotto da altre app. Questa funzionalità è simile alla cattura dello schermo, ma per l'audio. Il caso d'uso principale è abilitare le app di streaming per 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 tramite MIDI sulla piattaforma Android utilizzando l' API AMidi NDK .

Telecamera

Per un riepilogo delle modifiche all'API della fotocamera, 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 della privacy nel framework della fotocamera. Per evitare di esporre informazioni statiche sulla fotocamera potenzialmente sensibili in CameraCharacteristics senza il consenso dell'utente, le app devono ottenere l'autorizzazione CAMERA per recuperare metadati statici con un tag sensibile alla privacy utilizzando il metodo getCameraCharacteristics .

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

Query di riconfigurazione della sessione

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

API di gestione del buffer HAL3 della fotocamera

Android 10 introduce API opzionali di gestione del buffer HAL3 della fotocamera che consentono di implementare la logica di gestione del buffer per ottenere diversi compromessi in termini di memoria e latenza di acquisizione nelle implementazioni HAL della fotocamera.

Telecamera Interruttore fisico dinamico della telecamera HAL

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

Supporto per nascondere le telecamere 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, vedere Supporto multi-camera .

API VNDK Camera2

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

Configurazioni di flusso

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

Requisiti per la combinazione del flusso della telecamera

I dispositivi con Android 10 non sono più tenuti a supportare combinazioni di streaming con streaming fisici della telecamera secondaria. Tuttavia, i dispositivi che eseguono Android 10 con il dispositivo HAL della fotocamera versione 3.5 devono supportare isStreamCombinationSupported() per consentire alle app di verificare se è supportata una combinazione di flussi contenente flussi fisici.

Per ulteriori informazioni, vedere Supporto multi-camera .

Immagini HEIF

Android 10 fornisce il supporto nativo della fotocamera per immagini in formato file immagine ad alta efficienza (HEIF) , che offrono una migliore qualità dell'immagine e dimensioni più piccole rispetto alle immagini JPEG. I dispositivi devono disporre di un codificatore HEIC o HEVC per supportare le immagini HEIF.

Fotocamere monocromatiche

Android 10 fornisce supporto aggiuntivo per il formato di flusso Y8, i metadati statici dell'array di filtri colorati monocromatici e del vicino infrarosso (NIR) e le funzioni DngCreator per le fotocamere monocromatiche .

Connettività

Chiamate e messaggi

Numeri di emergenza e chiamate di emergenza

Android 10 fornisce 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 carta SIM, il segnale di rete o il database Android. I numeri possono essere classificati in base alle categorie dei servizi di emergenza come polizia, vigili del fuoco e ambulanza.

API per 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 le app per unirsi 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 del middleware e dell'operatore di telefonia mobile. La documentazione per gli sviluppatori si trova su 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 messaggi SMS tramite telefoni utilizzando meccanismi come il Bluetooth. Per ulteriori informazioni, consultare la documentazione di riferimento per il metodo getSubscriptionType e la costante SUBSCRIPTION_TYPE_REMOTE_SIM .

Più eSIM

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

Aggiornamenti dell'eSIM

Per i dispositivi con Android 10 che supportano eSIM, è necessario definire un array di ID slot eUICC non rimovibile. I dispositivi devono supportare anche IRadio HAL v1.4 e IRadioConfig HAL v1.2. Per ulteriori informazioni, consulta Implementazione dei requisiti eSIM e HAL .

5G non autonomo (NSA)

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

Suggerimento sull'account telefonico

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

Vettore

Migrare le impostazioni della rete mobile

Android 10 ha riprogettato il codice dell'interfaccia utente delle impostazioni della rete mobile e lo ha spostato dallo stack Telefonia allo stack 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 del dispositivo

Gli identificatori persistenti del dispositivo (IMEI/MEID, IMSI e numero di serie della build) sono protetti da un'autorizzazione privilegiata con accesso concesso anche alle app proprietarie del dispositivo e del profilo. Poiché i numeri di serie IMSI e SIM vengono forniti dal corriere, l'accesso a questi identificatori è concesso ai pacchi con privilegi del corriere.

Wifi

Selezione della rete

Android valuta continuamente la qualità della rete connessa e valuta la qualità delle reti disponibili. Android 10 ha aggiornato algoritmi e procedure per la selezione e il passaggio tra le reti Wi-Fi .

Scansione dell'offload della rete Wi-Fi preferita

Android 10 introduce un metodo API opzionale denominato setDeviceMobilityState() in WifiManager che aumenta l'intervallo tra le scansioni PNO (Preferred Network Offload) 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 a chiave pubblica).

Connessione Wi-Fi facile

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 fornire 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 creazione di un servizio ombrello "IP Server", dnsmasq verrà eliminato. Android 10 sostituisce l'uso 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 ulteriori dettagli, vedere packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java .

Non è richiesta alcuna azione per implementare questa modifica: tutti i dispositivi che rilasciano e aggiornano ad Android 10 utilizzano DhcpServer per impostazione predefinita. Se disponi di personalizzazioni per il 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 in upstream.

WPA3 e Wi-Fi potenziato aperto

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

Wi-Fi diretto

Wi-Fi Direct , noto anche come Wi-Fi P2P, consente ai dispositivi di supporto di rilevarsi e connettersi tra loro direttamente 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 è abilitata per impostazione predefinita per la modalità client, SoftAp e Wi-Fi Direct. I dispositivi devono fornire un'opzione per abilitare o disabilitare la randomizzazione MAC per ciascun SSID nell'interfaccia utente del sistema.

Passaggio R2

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

NFC

NFC sicuro

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

Android Beam è deprecato

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

Interfacce:

Metodi:

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

Grafica

ASuperfaceControl

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

Implementazione grafica

Livelli OpenGL ES

Android 10 introduce un sistema di stratificazione per GLES.

EGL1.5

Android 10 implementa l' interfaccia EGL 1.5 . Per informazioni sulle nuove funzionalità di EGL 1.5, consultare la specifica Khronos Releases EGL 1.5 .

Vulcano

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 una VkImage supportata 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

Settore automobilistico

Audio automobilistico

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

Navigazione gestuale

Android 10 introduce un'opzione per un sistema di navigazione completamente gestuale. Per informazioni su come preparare le app per utilizzare questa funzionalità, vedere la pagina di navigazione gestuale nel sito per sviluppatori Android.

Reti neurali

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

Documentazione nuova e aggiornata sulle reti neurali per Android 10:

Sensori

Sensori HAL 2.0

Sensors HAL 2.0 supporta l'utilizzo di code di messaggi veloci (FMQ) per inviare eventi dei sensori dall'HAL ad Android Sensors Framework.

Sensori spenti

Android 10 include un'impostazione sviluppatore per disattivare tutti i sensori su un dispositivo. Questa funzionalità aiuta gli sviluppatori a testare la funzionalità della propria app in situazioni in cui tali sensori non sono disponibili e offre inoltre 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 per il progetto di riferimento. Se disponi di altri sensori, consulta Personalizzazione per ulteriori dettagli sul supporto di questa funzionalità.

Media

Componenti multimediali aggiornabili

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

DRM multimediale

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

Decodifica

Android 10 supporta la decodifica SW AV1.

Autorizzazioni

Android 10 fornisce configurazioni di autorizzazione aggiuntive per la trasparenza e la privacy dell'utente.

Fornitore di contatti e informazioni sulle affinità

A partire da Android 10, l'accesso ai dati relativi all'affinità dei contatti, gestiti dal componente Fornitore di contatti , è diverso rispetto ad Android 9 e versioni precedenti. Queste modifiche relative all'accessibilità dei dati migliorano la privacy dell'utente in tutti i dispositivi Android 10 che utilizzano il componente Provider Contatti. Il database sottostante non contiene più dati sulle affinità dei contatti. Pertanto le app non possono scrivere o leggere da esso.

Si prevede che le modifiche apportate ad Android 10 avranno un grande impatto sulle API. Se le tue app si basano sulle funzionalità deprecate menzionate in Fornitore di contatti e Informazioni sulle affinità, potresti voler aggiornare le tue app per compensare eventuali modifiche. Inoltre, se utilizzi una versione biforcuta del provider di contatti, devi aggiornare il provider di contatti.

Autorizzazioni di posizione in tre stati

Le autorizzazioni di posizione a tre stati in Android 10 offrono agli utenti un maggiore controllo sul modo in cui le app accedono alle posizioni dei loro dispositivi.

Promemoria per l'accesso alla posizione in background

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

Limitare le posizioni opportunistiche

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

Avvio delle 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 pubblicitari e i takeover dannosi. Non è richiesta alcuna azione per abilitarlo.

Sandbox dell'app

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

Utilizza le linee guida della sandbox dell'app per la condivisione di file per fornire un'adeguata granularità di condivisione dei dati.

Limita l'accesso agli appunti dell'app

In Android 10, l'accesso agli appunti è cambiato in modo che il contenuto degli appunti non possa essere guardato chiamando ClipboardManager.getPrimaryClip o aggiungendo un ascoltatore onPrimaryClipChangedListener per la notifica quando gli appunti cambiano. Ciò aumenta la privacy dell'utente e impedisce alle app di malverting di modificare gli appunti.

In Android 10, l'accesso in lettura è consentito solo all'app corrente con focus sull'input o alla tastiera corrente. La chiamata al listener ClipboardManager.onPrimaryClipChanged() ora si attiva solo per le app che soddisfano tali restrizioni. ClipboardManager.getPrimaryClip e ClipboardManager.getPrimaryClipDescription restituiscono null se l'app richiedente non è l'editor del metodo di input (IME) predefinito o non ha lo stato attivo sull'input.

Le autorizzazioni di runtime includono il riconoscimento delle attività

Gli utenti ora 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 correttamente inserite nella whitelist in Android 10.

Autorizzazione MANAGE_DEVICE_ADMINS

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

Condivisione dei miglioramenti dell'API

Android 10 offre una serie di nuove funzionalità API della piattaforma Android relative alla condivisione . Se hai modificato il codice del foglio di condivisione nella tua implementazione, assicurati che quest'ultima supporti queste nuove funzionalità. Se non hai modificato il codice del foglio di condivisione nella tua implementazione, non devi fare nulla per supportare queste nuove funzionalità.

Runtime Android (ARTE)

Configurazione firmata

La funzionalità Signed Config consente di incorporare la configurazione delle restrizioni dell'interfaccia non SDK negli APK. Ciò consente di rimuovere interfacce specifiche non SDK dalla lista nera, in modo che AndroidX possa utilizzarle in sicurezza. Con questa modifica, AndroidX può aggiungere il supporto per nuove funzionalità sulle versioni Android precedenti.

Prestazione

Livello di astrazione Cgroup

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

Demone killer con memoria insufficiente (lmkd)

Android 10 supporta una nuova modalità lmkd che utilizza il monitoraggio delle informazioni di stallo della pressione del kernel (PSI) per il rilevamento della pressione della memoria.

Energia

Gestione energetica della piattaforma

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

Risparmio batteria 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 segnali al sistema per una pianificazione più intelligente del risparmio energetico. Questa opzione richiede configurazione ed è facoltativa da implementare.

Statistiche di potenza Hal

In Android 10, IPowerStats.hal sostituisce le API di raccolta delle statistiche di potenza in IPower.hal . Mentre il potere Hal supporta ancora le API, verranno migrati esclusivamente sulle statistiche di potenza in futuro.

L'alimentazione delle statistiche di potenza include nuove API per supportare la raccolta di dati dalla misurazione di potenza sul dispositivo, per dispositivi supportati. Anche le API di raccolta delle statistiche di potenza esistenti vengono aggiornate per migliorare la flessibilità. Le API di accensione di potenza rimangono in potenza e non cambiano.

Mitigazione termica

Il framework termico in Android 10 Abstracts Device Interfaces 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 interrogare lo 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 gli ascoltatori e l'accesso allo stato della temperatura nella classe PowerManager . Solo un servizio di sistema affidabile come un'API Android o il produttore di dispositivi può accedere a informazioni sugli eventi causali associati. I produttori di dispositivi o i produttori di SoC devono implementare thermal HAL 2.0 per consentire la piena funzionalità del nuovo framework termico.

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

Aggiornamenti

Formato file apice

Android Pony Express (APEX) è un nuovo formato contenitore utilizzato nel flusso di installazione per i componenti del sistema modulare.

Partizioni dinamiche

Le partizioni dinamiche introducono un sistema di partizionamento dello spazio per utenti su Android, consentendo la creazione, il ridimensionamento o la distruzione delle partizioni durante gli aggiornamenti OTA. I produttori di dispositivi non devono preoccuparsi delle dimensioni individuali delle partizioni, come system , vendor e product . Invece, viene assegnata una grande partizione super e le sottomissioni possono essere dimensionate dinamicamente al suo interno.

Aggiornamenti di sistema dinamico

Dynamic System Aggiornamenti (DSU) consente di creare un'immagine di sistema Android che gli utenti possono scaricare da Internet e provare senza il rischio di corrompere l'immagine di sistema corrente.

Backup e ripristino multiutente

Android 10 supporta la funzionalità di backup e ripristino per tutti gli utenti su 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 di non system è disattivato per impostazione predefinita in quanto ha solo una copertura parziale per i componenti delle impostazioni, dello sfondo e del sistema.

Overlayfs

Gli utenti che lavorano con userdebug o eng Builds si aspettano di essere in grado di rimuovere in modo efficiente la partizione di sistema come Write di lettura e quindi aggiungere o modificare un numero qualsiasi di file senza riflettere l'immagine di sistema. È possibile utilizzare Overlayfs , che imposta automaticamente l'archiviazione di supporto per un file system scrivibile come riferimento superiore e si monta in basso. Queste azioni si verificano nelle richieste adb disable-verity e adb remount . Per maggiori dettagli, consultare OverlayFS ReadMe in AOSP.

Supporto della libreria condiviso in modalità di ripristino

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

Per aggiungere una nuova libreria condivisa alla partizione di recupero, aggiungi recovery_available: true o recovery: true a Android.bp della libreria condivisa. Il primo installa la libreria sia sul sistema che sulle partizioni di recupero, mentre il secondo la installa solo sulla partizione di recupero.

Il supporto della libreria condiviso non può essere creato con il sistema di build basato su Android. Per convertire un eseguibile statico esistente per la modalità di ripristino in una dinamica, rimuovere 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à UDC (User Data Checkpoint) , che consente a Android di tornare al suo stato precedente quando un aggiornamento OTA (Android Over-the-Air (OTA) non riesce.