Note sulla versione di Android 9

Questa pagina riepiloga le principali funzionalità della versione Android 9 e fornisce collegamenti a informazioni aggiuntive. Questi riepiloghi delle funzionalità sono organizzati in base alla posizione della documentazione della funzionalità su questo sito. Consulta gli aggiornamenti del sito di agosto 2018 per una guida allo spostamento e alla ridenominazione delle sezioni.

Costruire

Immagine di sistema generica (GSI)

Un'immagine di sistema generica (GSI) è un'immagine di sistema con configurazioni adattate per i dispositivi Android. L'immagine di sistema generica (GSI) include dettagli sulle differenze tra GSI per i dispositivi avviati con Android 9 e i dispositivi che eseguono l'aggiornamento ad Android 9.

Architettura

Livello di astrazione hardware (HAL)

Compatibilità con le versioni precedenti del framework HIDL

La verifica della compatibilità con le versioni precedenti del framework HIDL è un metodo per verificare la compatibilità con le versioni precedenti del framework.

HAL disponibili dinamicamente

Gli HAL disponibili dinamicamente supportano l'arresto dinamico dei sottosistemi hardware Android quando non sono in uso o non sono necessari.

HIDL

Blocco memoria HIDL

HIDL MemoryBlock è un livello astratto costruito su hidl_memory , HIDL @1.0::IAllocator e HIDL @1.0::IMapper . È progettato per i servizi HIDL che dispongono di più blocchi di memoria che condividono un singolo heap di memoria.

Sovrapposizioni dell'albero dei dispositivi

Sovrapposizioni compresse

Android 9 e versioni successive includono il supporto per gli overlay compressi nell'immagine DTBO (Device Tree Blob Overlay) quando si utilizza la versione 1 dell'intestazione della tabella dell'albero dei dispositivi.

Aggiornamenti DTO

Android 9 e versioni successive richiedono che il bootloader passi il BLOB dell'albero dei dispositivi unificato al kernel prima di modificare le proprietà definite negli overlay dell'albero dei dispositivi (DTO) .

Controllo delle versioni dell'intestazione dell'immagine DTBO

Android 9 e versioni successive includono un campo della versione nell'intestazione dell'immagine DTBO.

Verifica DTBO

Android 9 e versioni successive richiedono una partizione DTBO. Per aggiungere nodi o apportare modifiche alle proprietà nel SoC DT, il bootloader deve sovrapporre dinamicamente un DT specifico del dispositivo sul SoC DT. Per ulteriori informazioni vedere Compilazione e verifica .

Conformità al kernel

Android 9 e versioni successive includono requisiti che riguardano il kernel, le sue interfacce e l'uso dei DTBO. Per ulteriori informazioni consultare queste pagine:

Venditore NDK

Modifiche alla progettazione

Per informazioni sulle modifiche alla progettazione VNDK in Android 9 e versioni successive, consulta queste pagine:

Controllore ABI

La pagina Stabilità ABI descrive il controllo ABI (Application Binary Interface), che garantisce che le modifiche apportate alle librerie VNDK mantengano la conformità ABI.

Istantanee VNDK

Un'immagine di sistema può utilizzare gli snapshot VNDK per fornire le librerie VNDK corrette alle immagini del fornitore anche quando le immagini del sistema e del fornitore sono create da versioni diverse di Android.

Oggetto interfaccia fornitore (oggetto VINTF)

Le pagine seguenti nella sezione Oggetto interfaccia fornitore descrivono gli aggiornamenti in Android 9 e versioni successive:

Programma di deprecazione di HIDL

Le pagine seguenti descrivono il modo in cui Android depreca e rimuove gli HAL HIDL:

Boot loader

Partizioni del prodotto

Android 9 e versioni successive supportano la creazione di partizioni /product utilizzando il sistema di compilazione Android. In precedenza, Android 8.x imponeva la separazione dei componenti specifici del sistema su chip (SoC) dalla partizione /system alla partizione /vendor senza dedicare spazio per componenti specifici dell'OEM creati dal sistema di build Android.

Conformità al motivo di avvio canonico

La pagina Canonical Boot Reason descrive le modifiche alla specifica del motivo di avvio del bootloader in Android 9 e versioni successive.

Sistema come root

Tutti i dispositivi avviati con Android 9 e versioni successive devono utilizzare system-as-root , che unisce ramdisk.img in system.img (noto anche come no-ramdisk), che a sua volta viene montato come rootfs.

Controllo delle versioni dell'intestazione dell'immagine di avvio

In Android 9 e versioni successive, l'intestazione dell'immagine di avvio contiene un campo per indicare la versione dell'intestazione . Il bootloader deve controllare questo campo della versione e analizzare l'intestazione di conseguenza.

DTBO in recupero

Per evitare errori OTA dovuti a mancate corrispondenze tra l'immagine di ripristino e la partizione DTBO su dispositivi non A/B, l'immagine di ripristino deve contenere informazioni dall'immagine DTBO .

Schermo

Visualizza ritagli

I ritagli del display consentono agli sviluppatori di app di creare esperienze coinvolgenti ed edge-to-edge, lasciando comunque spazio per sensori importanti sulla parte anteriore dei dispositivi.

Ruota i suggerimenti

Gli aggiornamenti al comportamento di rotazione dello schermo Android 9 e versioni successive includono il supporto per un controllo rivolto all'utente per bloccare la rotazione dello schermo in orizzontale o in verticale anche se la posizione del dispositivo cambia.

Transizioni delle app sincronizzate

Le transizioni delle app sincronizzate consentono nuove animazioni di transizione delle app.

Classificazione del testo (ex TEXTCLASSIFIER)

Android 9 e versioni successive includono un servizio di classificazione del testo , che è il modo consigliato per implementare la classificazione del testo, e un'implementazione del servizio predefinita.

Colore ad ampia gamma

Android 9 e versioni successive includono il supporto per colori ad ampia gamma, tra cui:

  • Gamma dinamica elevata (HDR)
  • Elaborazione del contenuto nello spazio colore BT2020, ma non come spazio dati di destinazione finale

Per utilizzare colori ad ampia gamma, l'intero stack di visualizzazione di un dispositivo (come schermo, compositore hardware, GPU) deve supportare colori ad ampia gamma o formati buffer. I dispositivi non sono tenuti a richiedere il supporto per contenuti ad ampia gamma anche se l'hardware lo supporta. Tuttavia, per sfruttare appieno l'hardware, è necessario abilitare un'ampia gamma di colori. Per evitare un'esperienza visiva incoerente, il colore ad ampia gamma non deve essere disattivato durante il runtime.

Compatibilità

Documento di definizione della compatibilità Android

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

Impostazioni

Widget delle app migliori

Il framework dei widget delle app Android offre una maggiore visibilità nelle interazioni dell'utente, in particolare quando un utente elimina o aggiunge manualmente i widget. Questa funzionalità è disponibile per impostazione predefinita con Launcher3.

I produttori devono aggiornare le proprie app di avvio (fornite con i dispositivi) per supportare questa funzionalità se non basata su Launcher3. Gli OEM devono supportare il nuovo campo widgetFeatures nel loro launcher predefinito.

Tieni presente che la funzionalità funziona end-to-end solo quando i launcher la implementano come previsto. AOSP include un'implementazione di esempio. Consulta l'ID modifica AOSP Iccd6f965fa3d61992244a365efc242122292c0ca per il codice di esempio fornito.

Notifiche di modifica dello stato del dispositivo agli installatori di pacchetti

Una trasmissione di sistema protetto può essere inviata alle app che dispongono dell'autorizzazione INSTALL_PACKAGES ogni volta che viene modificata proprietà come impostazioni locali o densità di visualizzazione. I ricevitori possono essere registrati nel manifest e un processo si attiva per ricevere la trasmissione. Ciò è utile per gli installatori di pacchetti che desiderano installare componenti aggiuntivi di app in seguito a tali modifiche, il che è raro, poiché le modifiche alla configurazione idonee ad attivare questa trasmissione sono rare.

Il codice sorgente della notifica di modifica dello stato del dispositivo si trova nelle seguenti posizioni in platform/frameworks/base :

  • api/system-current.txt
  • core/java/android/content/Intent.java
  • core/res/AndroidManifest.xml
  • services/core/java/com/android/server/am/ActivityManagerService.java

Informazione architettura

Le modifiche all'architettura delle informazioni per l'app Impostazioni forniscono più funzionalità e un'implementazione più semplice.

Test

Un test

Lo strumento da riga di comando Atest consente di creare, installare ed eseguire test Android localmente, accelerando notevolmente le ripetizioni dei test senza richiedere la conoscenza delle opzioni della riga di comando del cablaggio di test della Trade Federation.

Suite di test di compatibilità

Download CTS

I pacchetti Compatibility Test Suite (CTS) che supportano Android 9 sono disponibili nella pagina Download di CTS . Il codice sorgente per i test inclusi può essere sincronizzato con il tag android-cts-9.0_r1 nell'albero open source.

Opzioni CTS

Per Android 9, CTS v2 ottiene il comando e l'argomento seguenti:

  • run retry riprova tutti i test non riusciti o non eseguiti nelle sessioni precedenti.
  • '--shard-count shard eseguito da un CTS in un determinato numero di blocchi indipendenti, da eseguire su più dispositivi in ​​parallelo.

Inoltre, il comando precedentemente non documentato --retry-type è stato aggiunto allo stesso riferimento ai comandi della console CTS v2.

Servizio Secure Element (SE).

Il servizio Secure Element verifica la presenza di elementi sicuri supportati dalla piattaforma globale identificando se i dispositivi dispongono di un'implementazione SE HAL e, in caso affermativo, quanti. Viene utilizzato come base per testare l'API e l'implementazione dell'elemento sicuro sottostante.

Scatola di fusione dei sensori

La scatola di fusione dei sensori viene utilizzata nel test di fusione dei sensori della Camera Image Test Suite (Camera ITS) e nel test di sincronizzazione multi-camera e fornisce un ambiente di test coerente per misurare la precisione del timestamp della fotocamera e di altri sensori per telefoni Android. Consulta queste pagine per ulteriori informazioni:

Ampio campo visivo. ITS-in-a-box

L' ampio campo visivo ITS-in-a-box è un sistema automatizzato progettato per testare sia i sistemi di telecamere con campo visivo ampio (WFoV) che quelli con campo visivo regolare (RFoV) nella Camera ITS.

Suite di test del fornitore

Architettura del controller host

L' architettura del controller host Vendor Test Suite (VTS) è l'architettura del framework di test VTS integrato con il suo servizio di test basato su cloud.

Test HAL in base al nome del servizio

Il test HAL con riconoscimento del nome del servizio VTS supporta l'ottenimento del nome del servizio di una determinata istanza HAL in base al dispositivo su cui sono in esecuzione i test VTS.

Controllo della testabilità HAL

Il controllo di testabilità dell'HAL VTS include un metodo di runtime per utilizzare la configurazione del dispositivo per identificare quali test VTS devono essere ignorati per quella destinazione del dispositivo.

Infrastruttura di test automatizzata

L' infrastruttura di test automatizzato è un'infrastruttura VTS per il test automatizzato di VTS, CTS o altri test sui dispositivi partner che eseguono l'immagine di sistema generica AOSP (GSI).

Debug

Telemetria avanzata

In Android, la telemetria è il processo di raccolta automatica delle informazioni sull'utilizzo e sulla diagnostica del dispositivo, del sistema Android e delle app. Nelle versioni precedenti di Android, lo stack di telemetria era limitato e non acquisiva le informazioni necessarie per identificare e risolvere i problemi di affidabilità del sistema e del dispositivo o dell'app. Ciò ha reso difficile, se non impossibile, identificare le cause profonde dei problemi.

Android 9 include la funzione di telemetria statsd , che risolve questa carenza raccogliendo dati migliori più velocemente. statsd raccoglie statistiche sull'utilizzo delle app, sulla batteria e sui processi e si arresta in modo anomalo. I dati vengono analizzati e utilizzati per migliorare prodotti, hardware e servizi.

Per ulteriori dettagli, vedere frameworks/base/cmds/statsd/ .

Caratteristiche di sicurezza

Firma dell'app

Lo schema di firma APK v3 supporta la rotazione della chiave APK.

Supporto biometrico

Android 9 include la classe pubblica BiometricPrompt , che le app possono utilizzare per integrare il supporto dell'autenticazione biometrica in modo indipendente dal dispositivo e dalla modalità. Per ulteriori informazioni sull'integrazione dello stack biometrico per includere BiometricPrompt , vedere Biometria .

Analisi dinamica

Android 9 include il supporto per ulteriori strumenti di mitigazione e analisi degli exploit .

Integrità del flusso di controllo (CFI)

L'integrità del flusso di controllo (CFI) è un meccanismo di sicurezza che vieta le modifiche al grafico del flusso di controllo originale di un binario compilato, rendendo molto più difficile eseguire tali attacchi.

Kernel CFI

Oltre al CFI di sistema, abilitato per impostazione predefinita, Android 9 e versioni successive includono il supporto per l'integrità del flusso di controllo del kernel (CFI) .

Crittografia

Crittografia basata su file

La crittografia basata su file (FBE) è stata aggiornata per funzionare con lo storage adottabile . I nuovi dispositivi dovrebbero utilizzare la crittografia basata su file anziché la crittografia dell’intero disco.

Crittografia dei metadati

Android 9 e versioni successive includono il supporto per la crittografia dei metadati laddove è presente il supporto hardware. Con la crittografia dei metadati, una singola chiave presente al momento dell'avvio utilizza la crittografia basata su file per crittografare qualsiasi contenuto non crittografato.

Archivio chiavi

Android 9 e versioni successive includono Keymaster 4 , che presenta queste funzionalità.

Cassaforte

Android 9 e versioni successive includono il supporto per le chiavi Android Keystore archiviate e utilizzate in una CPU fisicamente separata creata appositamente per applicazioni ad alta sicurezza, come un SE (Embedded Secure Element) . StrongBox Keymaster è un'implementazione del Keymaster HAL in hardware discreto e sicuro. Una StrongBox ha:

  • CPU discreta
  • Archiviazione sicura integrale
  • Generatore di numeri casuali reali di alta qualità
  • Imballaggio antimanomissione
  • Resistenza del canale laterale

Importazione sicura della chiave

Per importare in modo sicuro una chiave in Keymaster 4, una chiave creata fuori dal dispositivo viene crittografata con una specifica delle autorizzazioni che definiscono come la chiave può essere utilizzata.

Supporto 3DES

Keymaster 4 include 3DES per compatibilità con i sistemi legacy che utilizzano 3DES.

Rilegatura della versione

Per supportare la struttura modulare di Treble e interrompere l'associazione di system.img a boot.img , Keymaster 4 ha modificato il modello di associazione della versione della chiave per avere livelli di patch separati per ciascuna partizione. Ciò consente a ciascuna partizione di essere aggiornata in modo indipendente fornendo comunque la protezione di rollback.

API di conferma protetta per Android

I dispositivi supportati che vengono avviati con Android 9 installato offrono agli sviluppatori la possibilità di utilizzare l' API di conferma protetta di Android . Con questa API, le app possono utilizzare un'istanza di ConfirmationPrompt per visualizzare un messaggio all'utente, chiedendogli di approvare una breve dichiarazione. Questa affermazione consente a un'app di riaffermare che l'utente desidera completare una transazione sensibile, come effettuare un pagamento.

SELinux

Sandbox SELinux per app

Il sandbox dell'applicazione dispone di nuove protezioni e casi di test per garantire che tutte le app non privilegiate destinate ad Android 9 e versioni successive eseguano sandbox SELinux individuali.

Treble SELinux cambia

Gli aggiornamenti a Treble SELinux in Android 9 e versioni successive sono documentati in diverse pagine nella sezione SELinux .

Inizializzazione del venditore

Vendor init chiude il buco nella divisione sistema/vendor di Treble utilizzando un dominio SELinux separato per eseguire comandi /vendor con autorizzazioni specifiche del fornitore.

Proprietà di sistema

Android 9 impedisce che le proprietà di sistema vengano condivise inutilmente tra le partizioni system e quelle vendor e fornisce un metodo per garantire la coerenza tra le proprietà di sistema condivise.

Test degli attributi SELinux

Android 9 include nuovi test in fase di compilazione che garantiscono che tutti i file in posizioni specifiche abbiano gli attributi appropriati . Ad esempio, tutti i file in sysfs hanno l'attributo richiesto sysfs_type .

Audio

Effetti audio ad alta risoluzione

Gli aggiornamenti agli effetti audio ad alta risoluzione includono la conversione dell'elaborazione degli effetti dal formato int16 al formato float e aumenti delle tracce di output client simultanee, della memoria client/server massima e delle tracce mixate totali.

Telecamera

Telecamere USB esterne

Android 9 e versioni successive supportano l'utilizzo di fotocamere USB plug-and-play (ovvero webcam) utilizzando l' API Android Camera2 standard e l'interfaccia HIDL della fotocamera.

Tracciamento del movimento

I dispositivi con fotocamera possono pubblicizzare la capacità di rilevamento del movimento .

Supporto multi-camera

Il supporto multi-camera include il supporto API per dispositivi multi-camera tramite un nuovo dispositivo fotocamera logico composto da due o più dispositivi fotocamera fisici che puntano nella stessa direzione.

Parametri di sessione

L'implementazione dei parametri di sessione può ridurre i ritardi consentendo ai client della telecamera di configurare attivamente un sottoinsieme di costosi parametri di richiesta come parte della fase di inizializzazione della sessione di acquisizione.

Singolo produttore, buffer di consumatori multipli

Il trasporto buffer della fotocamera con un singolo produttore e più consumatori è un insieme di metodi che consente ai client della fotocamera di aggiungere e rimuovere dinamicamente le superfici di output mentre la sessione di acquisizione è attiva e lo streaming della fotocamera è in corso.

Connettività

Chiamate e messaggi

Implementare piani dati

Android 9 e versioni successive forniscono un supporto migliorato per gli operatori che implementano piani dati utilizzando le API SubscriptionPlan.

App di chiamata di terze parti

Android 9 e versioni successive forniscono API che consentono alle app di chiamata di terze parti (3P) di gestire chiamate simultanee in entrata dell'operatore e di registrare le chiamate nel registro delle chiamate di sistema.

Vettore

Identificazione del vettore

In Android 9, AOSP aggiunge un database degli ID dell'operatore per facilitare l'identificazione dell'operatore . Il database riduce al minimo la logica duplicata e le esperienze frammentate delle app fornendo un modo comune per identificare gli operatori.

eSIM

La SIM incorporata (eSIM o eUICC) è la tecnologia più recente che consente agli utenti mobili di scaricare il profilo di un operatore e attivare il servizio di un operatore senza disporre di una scheda SIM fisica. In Android 9 e versioni successive, il framework Android fornisce API standard per l'accesso all'eSIM e la gestione dei profili di abbonamento sull'eSIM. Per ulteriori informazioni, vedere:

Supporto multi-SIM per le impostazioni IMS

Android 9 e versioni successive forniscono miglioramenti alle impostazioni utente per il sottosistema multimediale IP (IMS) . Puoi configurare la voce fuori campo LTE (VoLTE), le videochiamate e le chiamate Wi-Fi in base al singolo abbonamento invece di condividere queste impostazioni tra tutti gli abbonamenti.

Trasmissioni di stato della SIM

In Android 9 e versioni successive, Intent.ACTION_SIM_STATE_CHANGED è deprecato e vengono aggiunte due trasmissioni separate per lo stato della carta e lo stato dell'applicazione della carta, TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED e TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED .

Con queste modifiche, i ricevitori che devono solo sapere se una carta è presente non devono ascoltare i cambiamenti di stato dell'applicazione e i ricevitori che devono solo sapere se le applicazioni della carta sono pronte non devono ascoltare i cambiamenti nello stato della carta.

Le due nuove trasmissioni sono @SystemApis e non sono appiccicose. Solo i ricevitori con l'autorizzazione READ_PRIVILEGED_PHONE_STATE possono ricevere le trasmissioni.

Gli intenti non vengono ritrasmessi quando sblocchi il dispositivo. I ricevitori che dipendono dalle trasmissioni inviate prima dello sblocco devono utilizzare directBootAware oppure devono interrogare lo stato dopo lo sblocco dell'utente. Gli stati possono essere interrogati utilizzando le API corrispondenti in TelephonyManager, getSimCardState() e getSimApplicationState() .

Wifi

Wi-Fi dell'operatore

La funzionalità Wi-Fi dell'operatore consente ai dispositivi di connettersi automaticamente alle reti Wi-Fi implementate dall'operatore. Nelle aree ad alta congestione o con copertura cellulare minima come uno stadio o una stazione della metropolitana, il Wi-Fi dell'operatore aiuta a migliorare la connettività e allevia il traffico.

Randomizzazione MAC

La randomizzazione MAC consente ai dispositivi di utilizzare indirizzi MAC casuali durante la ricerca di nuove reti mentre non sono attualmente associati a una rete. In Android 9 e versioni successive, è possibile abilitare un'opzione sviluppatore per fare in modo che un dispositivo utilizzi un indirizzo MAC casuale quando si connette a una rete Wi-Fi.

Attiva automaticamente il Wi-Fi

Quando la funzione Attiva Wi-Fi automaticamente è attivata, il Wi-Fi viene riattivato automaticamente ogni volta che il dispositivo si trova vicino a una rete Wi-Fi salvata con un indicatore di potenza relativa del segnale ricevuto (RSSI) sufficientemente elevato.

Tempo di andata e ritorno Wi-Fi

Il tempo di andata e ritorno Wi-Fi (RTT) consente ai dispositivi di misurare la distanza da altri dispositivi di supporto, siano essi punti di accesso (AP) o peer Wi-Fi Aware (se Wi-Fi Aware è supportato sul dispositivo). Questa funzionalità si basa sul protocollo IEEE 802.11mc e consente alle app di utilizzare una maggiore precisione e consapevolezza della posizione.

Miglioramenti del punteggio Wi-Fi

I modelli di punteggio Wi-Fi migliorati determinano in modo rapido e accurato quando un dispositivo deve uscire da una rete Wi-Fi connessa o entrare in una nuova rete Wi-Fi. Questi modelli forniscono un'esperienza affidabile e senza interruzioni per gli utenti evitando lacune nella connettività.

Esamina e ottimizza i valori RSSI nelle risorse config.xml , in particolare le seguenti:

  • config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz
  • config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz
  • config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz

Concorrenza Wi-Fi STA/AP

La concorrenza Wi-Fi STA/AP è la capacità dei dispositivi di operare contemporaneamente in modalità stazione (STA) e punto di accesso (AP). Per i dispositivi che supportano il Wi-Fi dual band simultaneo (DBS), questo apre funzionalità come non interrompere il Wi-Fi STA quando un utente desidera abilitare un hotspot (SoftAP).

Miglioramenti WiFiStateMachine

WifiStateMachine è la classe principale utilizzata per controllare l'attività Wi-Fi, coordinare l'input dell'utente (modalità operative: hotspot, scansione, connessione o spegnimento) e controllare le azioni della rete Wi-Fi (come scansione o connessione).

In Android 9 e versioni successive, il codice del framework Wi-Fi e l'implementazione di WifiStateMachine sono stati riprogettati, con conseguenti dimensioni del codice ridotte, logica di controllo Wi-Fi più semplice da seguire, migliore granularità del controllo e maggiore copertura e qualità dei test unitari .

Ad alto livello, WifiStateMachine consente al Wi-Fi di trovarsi in uno dei quattro stati:

  • Modalità client (può connettersi ed eseguire la scansione)
  • Modalità di sola scansione
  • Modalità SoftAP (hotspot Wi-Fi)
  • Disabilitato (Wi-Fi completamente disattivato)

Ciascuna modalità Wi-Fi ha requisiti diversi per l'esecuzione dei servizi e deve essere impostata in modo coerente, gestendo solo gli eventi rilevanti per il suo funzionamento. La nuova implementazione limita il codice agli eventi legati a quella modalità, riducendo i tempi di debug e il rischio di introdurre nuovi bug a causa della complessità. Oltre alla gestione esplicita della funzionalità della modalità, la gestione dei thread viene gestita in modo coerente e l'uso di canali asincroni viene eliminato come meccanismo per la sincronizzazione.

Aggiornamenti delle autorizzazioni Wi-Fi

In Android 9 e versioni successive, l'autorizzazione dell'app CHANGE_WIFI_STATE è abilitata per impostazione predefinita. Puoi disattivare l'autorizzazione per qualsiasi app nella pagina delle impostazioni in Impostazioni > App e notifiche > Accesso speciale alle app > Controllo Wi-Fi .

Le app devono essere in grado di gestire i casi in cui non viene concessa l'autorizzazione CHANGE_WIFI_STATE .

Per convalidare questo comportamento, eseguire i test robotelettrici e manuali.

Per i test manuali:

  1. Vai su Impostazioni > App e notifiche > Accesso speciale alle app > Controllo Wi-Fi .
  2. Seleziona e disattiva l'autorizzazione per la tua app.
  3. Verifica che la tua app possa gestire lo scenario in cui non viene concessa l'autorizzazione CHANGE_WIFI_STATE .

Deprecazione di WPS

A causa di problemi di sicurezza, la configurazione protetta Wi-Fi (WPS) in WiFiManager è deprecata e disabilitata in Android 9 e versioni successive. Tuttavia, WiFiDirect utilizza ancora WPS nel richiedente WPA.

Grafica

Implementazione

API Vulcan 1.1

Android 9 e versioni successive supportano l'implementazione dell'API grafica Vulkan 1.1 .

Strumento WinScope per tracciare le transizioni delle finestre

Android 9 e versioni successive includono lo strumento WinScope per tracciare le transizioni delle finestre. WinScope fornisce infrastrutture e strumenti per registrare e analizzare lo stato del gestore delle finestre durante e dopo le transizioni. Consente di registrare e scorrere le transizioni delle finestre, registrando allo stesso tempo tutti gli stati pertinenti del gestore delle finestre in un file di traccia. È possibile utilizzare questi dati per riprodurre e procedere attraverso la transizione.

Il codice sorgente dello strumento WinScope si trova in platform/development/tools/winscope .

Interazione

Audio automobilistico

Automotive Audio descrive l'architettura audio per le implementazioni Android relative al settore automobilistico.

L'HAL delle Reti Neurali (NN) definisce un'astrazione dei vari acceleratori. I driver per questi acceleratori devono essere conformi a questo HAL.

Veicolo HAL

Proprietà del veicolo descrive le modifiche all'interfaccia HAL del veicolo.

Selezione del satellite GNSS

Quando si lavora con i nuovi HAL del sistema satellitare di navigazione globale (GNSS) (v1.1+), Android Framework monitora le impostazioni Android. I partner possono modificare le impostazioni da Google Play Services o altri aggiornamenti di sistema. Queste impostazioni indicano all'HAL GNSS se determinati satelliti GNSS non devono essere utilizzati. Ciò può essere utile in caso di errori persistenti del satellite GNSS o della costellazione o per reagire più rapidamente ai problemi di implementazione dell'HAL GNSS che possono verificarsi quando si mescolano costellazioni utilizzando sistemi temporali diversi ed eventi esterni, come i rollover dei secondi intercalari, dei giorni o delle settimane .

Modello hardware GNSS

In Android 9, la versione GNSS HAL 1.1 o successiva può trasmettere informazioni sull'API hardware alla piattaforma. La piattaforma deve implementare l'interfaccia IGnssCallback e passare un handle all'HAL. L'HAL GNSS trasmette le informazioni sul modello hardware tramite il metodo LocationManager#getGnssHardwareModelName() . I produttori di dispositivi dovrebbero collaborare con i propri fornitori HAL GNSS per fornire queste informazioni ove possibile.

Autorizzazioni

Configurazione degli aggiornamenti del controllo degli accessi discrezionali

La configurazione del controllo di accesso discrezionale (DAC) contiene aggiornamenti al meccanismo degli ID Android (AID) per estendere le funzionalità del file system.

Autorizzazioni delle app privilegiate nella whitelist

In Android 9 e versioni successive, se sono presenti autorizzazioni che devono essere negate, modificare l'XML per utilizzare il tag deny-permission invece del tag permission utilizzato nelle versioni precedenti.

Dati

Miglioramenti nella stima della larghezza di banda

Android 9 fornisce un supporto migliorato per la stima della larghezza di banda. Le app Android possono definire impostazioni di risoluzione più appropriate per le videochiamate e lo streaming video se possono accedere alla larghezza di banda dati disponibile.

Sui dispositivi con Android 6.0 o versioni successive, un chiamante che desidera una stima della larghezza di banda per una rete cellulare chiama ConnectivityManager.requestBandwidthUpdate() e il framework può fornire una larghezza di banda in downlink stimata.

Ma sui dispositivi con versione 9 o successiva, la callback onCapabilitiesChanged() si attiva automaticamente quando si verifica una modifica significativa nella larghezza di banda stimata e la chiamata requestBandwidthUpdate() non funziona; i getLinkDownstreamBandwidthKbps() e getLinkUpstreamBandwidthKbps() associati vengono popolati con le informazioni aggiornate fornite dal livello fisico.

Inoltre, i dispositivi possono verificare le larghezze di banda delle celle LTE tramite ServiceState.getCellBandwidths() . Ciò consente alle applicazioni di determinare quanta larghezza di banda (frequenza) è disponibile su una determinata cella. Le informazioni sulla larghezza di banda della cella sono disponibili tramite un menu nascosto in modo che i tester sul campo possano verificare le informazioni più aggiornate.

Monitoraggio del traffico eBPF

Lo strumento per il traffico di rete eBPF utilizza una combinazione di implementazione del kernel e dello spazio utente per monitorare l'utilizzo della rete su un dispositivo dall'ultimo avvio del dispositivo. Questo strumento fornisce funzionalità aggiuntive come il tagging dei socket, la separazione del traffico in primo piano/in background e il firewall per UID per bloccare l'accesso alla rete delle app in base allo stato del dispositivo.

Ripristina alle API inferiori

I dispositivi ora possono eseguire il ripristino dalle versioni future del sistema operativo. Ciò è particolarmente utile quando gli utenti hanno aggiornato i loro telefoni ma poi li hanno persi o rotti.

Se un OEM modifica gli agenti di backup per uno qualsiasi dei pacchetti di sistema (Android, sistema, impostazioni), tali agenti dovrebbero gestire il ripristino dei set di backup effettuati su versioni successive della piattaforma senza arresti anomali e ripristinando almeno alcuni dati.

Prendi in considerazione l'utilizzo di un validatore per verificare la presenza di valori non validi di un determinato pezzo di dati di backup e ripristinare solo i dati validi, come in core/java/android/provider/SettingsValidators.java .

La funzionalità è attiva per impostazione predefinita. Il supporto di SettingsBackupAgent per il ripristino da versioni future può essere disattivato tramite Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION . Non è necessaria alcuna implementazione aggiuntiva a meno che il produttore del dispositivo non estenda uno degli agenti di backup inclusi nella ROM (o aggiunga un agente personalizzato).

Questa funzionalità consente il ripristino del sistema da versioni future della piattaforma; tuttavia, è ragionevole aspettarsi che i dati ripristinati non siano completi. Le seguenti istruzioni si applicano ai seguenti agenti di backup:

  • PackageManagerBackupAgent supporta le versioni future dei dati di backup tramite il controllo delle versioni del formato; le estensioni qui devono essere compatibili con il codice di ripristino corrente o seguire le istruzioni nella classe, che includono il bumping delle costanti corrette.

  • SystemBackupAgent specifica restoreAnyVersion = false in Android 9 e versioni successive. Non supporta il ripristino da versioni successive dell'API.

  • SettingsBackupAgent specifica restoreAnyVersion = true in Android 9 e versioni successive. Il supporto parziale esiste tramite validatori. Un'impostazione può essere ripristinata da una versione API superiore se esiste un validatore per essa nel sistema operativo di destinazione. L'aggiunta di qualsiasi impostazione dovrebbe essere accompagnata dal relativo validatore. Controlla la classe per i dettagli.

  • Qualsiasi agente di backup personalizzato incluso nella ROM dovrebbe aumentare il proprio codice di versione ogni volta che viene apportata una modifica incompatibile al formato dei dati di backup e garantire restoreAnyVersion = false (l'impostazione predefinita) se il proprio agente non è pronto a gestire i dati di backup da una versione futura di il loro codice.

Impresa

Miglioramenti del profilo gestito

Le modifiche all'esperienza utente per i profili gestiti rendono più semplice per gli utenti identificare, accedere e controllare il profilo gestito.

Metti in pausa le OTA

Un nuovo @SystemApi consente ai proprietari dei dispositivi di sospendere a tempo indeterminato gli aggiornamenti OTA , inclusi gli aggiornamenti di sicurezza.

Prestazione

Salute 2.0

Android 9 e versioni successive includono android.hardware.health HAL 2.0, un importante aggiornamento della versione da Health@1.0 HAL. Per maggiori informazioni consultare queste pagine:

Soluzione di memorizzazione nella cache dell'APK

Android 9 e versioni successive includono una soluzione di memorizzazione nella cache APK per l'installazione rapida di app precaricate su un dispositivo che supporta partizioni A/B. Gli OEM possono posizionare precaricati e app popolari nella cache APK archiviata principalmente nella partizione B vuota sui nuovi dispositivi con partizionamento A/B senza influire sullo spazio dati rivolto all'utente.

Ottimizzazione guidata dal profilo

Android 9 e versioni successive supportano l'utilizzo dell'ottimizzazione guidata dal profilo (PGO) di Clang su moduli Android nativi che dispongono di regole di creazione del progetto.

Registrazione write-ahead

Una modalità speciale di SQLiteDatabase denominata compatibilità write-ahead logging (WAL) consente a un database di utilizzare journal_mode=WAL mantenendo un massimo di una connessione per database.

Tempi di avvio

Android 9 modifica l'ottimizzazione del tempo di avvio come descritto in Ottimizzazione dei tempi di avvio .

Energia

Restrizioni di fondo

Android 9 e versioni successive includono restrizioni in background che consentono agli utenti di limitare le app che potrebbero consumare la carica della batteria. Il sistema potrebbe anche suggerire di disabilitare le app che influiscono negativamente sulla salute del dispositivo.

Dispositivi senza batteria

Android 9 gestisce i dispositivi senza batteria in modo più elegante rispetto alle versioni precedenti. Android 9 rimuove il codice per i dispositivi senza batteria che presupponevano per impostazione predefinita la presenza di una batteria, carica al 100% e in buona salute con una lettura della temperatura normale sul termistore.