Google ha pubblicato il rilascio della piattaforma mobile open source Android 14. Il codice sorgente relativo alla nuova versione è disponibile nel repository Git del progetto (branch android-14.0.0_r1). Gli aggiornamenti del firmware sono stati preparati per i dispositivi della serie Pixel. In seguito, sono previsti aggiornamenti del firmware per smartphone prodotti da Samsung Galaxy, iQOO, Nothing, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo e Xiaomi. Sono inoltre state create immagini di sistema generiche (GSI) universali, adatte per diversi dispositivi basati su architetture ARM64 e x86_64.
Novità principali:
- Il pacchetto Health Connect è stato integrato nella piattaforma principale, in precedenza fornito come pacchetto separato tramite Google Play. Health Connect garantisce una memorizzazione centralizzata dei dati provenienti da braccialetti fitness e altri dispositivi legati alla salute dell'utente, e consente l'accesso condiviso ai dati sanitari da parte di diverse applicazioni. L'accesso alle impostazioni di Health Connect sarà ora fornito attraverso il configuratore di piattaforma, ad esempio, tramite le impostazioni sulla privacy si potrà gestire a quali dati specifici sulla salute possono accedere determinate applicazioni. Inoltre, Health Connect ha aggiunto il supporto per salvare le informazioni sul percorso percorso durante l'allenamento (l'utente può specificare l'intervallo di tempo per il quale verrà salvato l'elenco dei punti di riferimento). Il percorso può essere visualizzato su una mappa e, se desiderato, trasferito per l'elaborazione ad altre applicazioni, previa conferma esplicita da parte dell'utente.

- Ampliate le opzioni per confermare l'accesso alle informazioni sulla posizione. In un dialogo di conferma dell'accesso alla posizione è stata aggiunta una nuova sezione con informazioni su quando l'applicazione sta trasmettendo dati sulla posizione (accesso negato, consenti solo una volta e consenti ad ogni esecuzione dell'applicazione) e dettagli su dove è possibile ottenere ulteriori informazioni sull'accesso ai dati trasmessi.

- Implementata una notifica periodica (una volta al mese) con un avviso sulle modifiche apportate dalle applicazioni autorizzate ad accedere alla posizione, riguardanti i metodi di trasmissione dei dati a terzi (ad esempio, viene visualizzato quando l'applicazione inizia a utilizzare i dati sulla posizione per la visualizzazione di pubblicità).

- È stata implementata un'indicazione più visibile con una freccia all'indietro, mostrata per facilitare la comprensione dell'uso del gesto dello schermo per tornare indietro.

- Nel meccanismo Sharesheet, utilizzato per inviare dati (ad esempio, immagini o link) al di fuori dell'app o ad un altro utente, è stata aggiunta la funzionalità di includere azioni personalizzate. Ad esempio, è possibile definire un elenco di gestori ChooserAction, mostrando le app e gli utenti a cui è possibile inviare dati. Inoltre, è stata ampliata la gamma di segnali utilizzati per classificare gli obiettivi per l'invio diretto dei dati.

- È stata fornita la possibilità di concedere parzialmente i permessi per accedere solo a foto e video selezionati dall'utente (READ_MEDIA_VISUAL_USER_SELECTED, i file a cui si concede accesso vengono selezionati dall'utente tramite l'interfaccia Photo picker durante la comparsa della richiesta di permessi). Dopo che l'applicazione è stata spostata in background o chiusa, il permesso fornito dall'utente viene automaticamente revocato. Nel dialogo di conferma dei permessi per l'accesso delle applicazioni ai file multimediali è stata introdotta la possibilità di concedere accesso solo a foto o video specifici.

- È stata aggiunta una sezione nel configuratore per la personalizzazione delle preferenze regionali, come le unità di misura della temperatura, il primo giorno della settimana e il sistema di numerazione. Ad esempio, un europeo residente negli Stati Uniti può configurare l'uso del grado Celsius invece del grado Fahrenheit e considerare lunedì come primo giorno della settimana anziché domenica.

- Ampliate le opzioni di scaling dei font, il livello massimo di scaling del font è stato aumentato dal 130% al 200%, e affinché il testo ingigantito non appaia eccessivamente grande, ora viene applicata una variazione non lineare del livello di scaling (il testo già grande viene ingrandito meno rispetto a quello piccolo), il che permetterà di ottenere una leggibilità ottimale per le persone con problemi di vista senza rischio di distorsione nel layout dell'interfaccia.

- Il supporto introdotto nel precedente rilascio per la registrazione di video in alta gamma dinamica (HDR) è stato ampliato con funzionalità per ottenere informazioni aggiuntive dalla fotocamera che consentono di salvare le immagini nel formato 'Ultra HDR', in cui per codificare il colore vengono utilizzati 10 bit per canale. Il formato Ultra HDR è completamente compatibile con JPEG, permettendo alle applicazioni di lavorare con immagini HDR senza modifiche e, se necessario, di visualizzarle utilizzando un intervallo di luminosità standard. L'output in modalità HDR è automaticamente gestito dalla piattaforma se viene attivato il supporto HDR nel manifesto dell'applicazione o durante la chiamata a Window.setColorMode. Per il rendering separato di Ultra HDR tramite OpenGL o Vulkan può essere utilizzata la classe Gainmap.

- Sono stati limitati i tipi di applicazioni autorizzate a visualizzare notifiche a schermo intero quando lo schermo è bloccato. Tali notifiche sono destinate a richiamare l'attenzione su informazioni che richiedono una risposta immediata, come la ricezione di una chiamata in arrivo o l'attivazione di una sveglia, pertanto i permessi per visualizzare tali notifiche saranno ora limitati ad applicazioni per effettuare chiamate e inviare allarmi.
- Migliorato il controllo delle animazioni che segnalano la transizione tra diversi schermi (schede) nell'app con il gesto di scorrimento che sposta i contenuti. Aggiunti nuovi componenti per le animazioni di transizione tra schermi inferiore e laterale, così come per l'apertura della ricerca. Introdotto un API per creare effetti di transizione personalizzati nell'app.
- Aggiornato il set di estensioni per la fotocamera (Camera Extensions), che offre la possibilità di utilizzare algoritmi di elaborazione delle immagini più complessi e a lungo termine, ad esempio, per migliorare la qualità delle foto scattate in condizioni di scarsa illuminazione. Aggiunte funzionalità per prevedere i tempi di elaborazione delle immagini, ottenere informazioni sul progresso dell'elaborazione e ottenere rapidamente una bozza dell'immagine prima di completare l'elaborazione finale. Implementato un modalità di anteprima più ottimizzata ed efficiente dal punto di vista energetico per SurfaceView. Durante l'uso delle estensioni, è supportato il tocco per la messa a fuoco e lo zoom.
- Supporto per l'uso delle capacità integrate della fotocamera per il ridimensionamento e il ritaglio delle immagini RAW trasmesse.
- Aggiunta la possibilità di utilizzare formati audio senza perdita di qualità (lossless) per le cuffie cablate collegate via USB. In API è stato aggiunto il classe AudioMixerAttributes, che consente di inviare direttamente l'audio al dispositivo, senza miscelazione, regolazione del volume o elaborazione degli effetti.
- Introdotta la classe Mesh nell'API grafica, che consente di creare varianti personalizzate delle mesh poligonali con shader vertex e fragment scritti in AGSL.
- Aggiunta la possibilità di accelerazione hardware per il rendering nel buffer, implementata tramite la classe HardwareBufferRenderer.
- Nella classe Path, che consente di creare grafica vettoriale basata su contorni geometrici compositi, è stata aggiunta la supporto all'interpolazione tra contorni con struttura simile per creare un effetto di morphing e l'utilizzo di PathIterator per l'iterazione sequenziale di tutti i segmenti del contorno.
- Ampliate le opzioni per associare impostazioni linguistiche specifiche a diverse applicazioni. È stata fornita la possibilità di definire un elenco di lingue che verranno visualizzate nel configuratore Android quando si seleziona la lingua per un'applicazione specifica.
- Ampliate le aree in cui il sistema mostra informazioni sulla privacy definite dagli sviluppatori nel modulo della Play Console, come la politica riguardante la condivisione dei dati con terzi. Ad esempio, tali informazioni vengono ora mostrate nella finestra di dialogo delle autorizzazioni.
- Negli applicativi che utilizzano gestori in background, è ora obbligatorio specificare il tipo di servizio in background. Durante l'esecuzione, il sistema verifica la corrispondenza tra il tipo di servizio specificato, le autorizzazioni richieste e l'API utilizzato. Ad esempio, se l'app ha specificato il tipo di servizio in background FOREGROUND_SERVICE_TYPE_LOCATION, si presume che possano essere richieste le autorizzazioni ACCESS_COARSE_LOCATION o ACCESS_FINE_LOCATION.
- Apportate modifiche per migliorare la sicurezza: vietato l'invio di richieste intent da parte delle app a determinati componenti interni della piattaforma. Il codice caricato dinamicamente deve ora essere etichettato con un attributo di accesso in sola lettura. Nelle funzioni ZipFile(String) e ZipInputStream.getNextEntry() è vietata l'elaborazione di archivi zip i cui percorsi iniziano con il simbolo «/» o contengono la sequenza «..». Limitato l'avvio di lavori dai gestori in background e aggiornate le restrizioni sull'invocazione delle API non fornite nel SDK.
- Collegando un dispositivo via USB a un computer desktop, oltre ai precedenti modi di interazione, come il trasferimento di file, ricarica, condivisione internet, ecc., ora è possibile utilizzare lo smartphone come webcam (modalità UVC, USB Video Class). Di default, questa funzionalità è disattivata, ma può essere attivata se si dispone di accesso root.
- Continua a migliorare le prestazioni della piattaforma su tablet e dispositivi con schermi pieghevoli. Fornite librerie che prevedono eventi legati al movimento del puntatore e garantiscono basse latenze durante l'uso di stilo. Sono forniti modelli di interfaccia per schermi grandi, tenendo conto di applicazioni come i social media, comunicazione, contenuti multimediali, lettura e acquisti.
- È stata aggiunta una nuova autorizzazione per consentire alle applicazioni di eseguire azioni mentre si trovano in background. L'attivazione durante il funzionamento in background è limitata per non distrarre l'utente mentre utilizza l'applicazione corrente. Le applicazioni attive hanno maggiore capacità di controllo sull'attivazione delle azioni da parte di altre applicazioni con cui interagiscono.
- È stata ottimizzata la gestione della memoria per un'allocazione più efficiente delle risorse per le applicazioni in esecuzione in background. Dopo pochi secondi dal passaggio dell'applicazione allo stato di cache, il funzionamento in background è limitato alle interazioni con le API che gestiscono il ciclo di vita dell'applicazione, come le API Foreground Services, JobScheduler e WorkManager.
- Le notifiche contrassegnate con il flag FLAG_ONGOING_EVENT possono ora essere rifiutate quando vengono visualizzate su dispositivi con schermo sbloccato. Se il dispositivo è in modalità blocco, tali notifiche rimarranno non rifiutabili. Anche le notifiche importanti per il funzionamento del sistema rimarranno non rifiutabili.
- Nell'API PackageInstaller sono stati aggiunti nuovi metodi: requestUserPreapproval(), che consente al catalogo delle applicazioni di posticipare il download dei pacchetti APK fino al ricevimento della conferma di installazione da parte dell'utente; setRequestUpdateOwnership(), che permette di legare all'installatore le future operazioni di aggiornamento dell'app; setDontKillApp(), che consente di impostare funzionalità aggiuntive per l'applicazione durante l'esecuzione del programma. Nell'API InstallConstraints, agli installatori è data la possibilità di attivare l'installazione degli aggiornamenti dell'app in momenti in cui l'app non è in uso.
- Prosegue il lavoro per migliorare l'efficienza della piattaforma su tablet e dispositivi con schermi pieghevoli. Sono state aggiornate le raccomandazioni per lo sviluppo di applicazioni su dispositivi con schermi grandi e sono stati aggiunti modelli di interfaccia standard per grandi schermi, considerando applicazioni come social media, comunicazioni, contenuti multimediali, lettura e acquisti. È stato proposto un rilascio preliminare del Cross device SDK con strumenti per sviluppare applicazioni funzionanti correttamente su diversi tipi di dispositivi (smartphone, tablet, smart TV, ecc.) e vari formati.
- Ottimizzata la coordinazione delle operazioni di background ad alta intensità di risorse, come il caricamento di file di grandi dimensioni con connessione Wi-Fi. Modifiche all'API per l'inizio dei servizi in primo piano (Foreground Service) e la pianificazione delle attività (JobScheduler), in cui è stata aggiunta una nuova funzionalità per i lavori avviati dall'utente relativi al trasferimento di dati. Introdotte richieste per specificare il tipo di servizi in primo piano avviati (lavoro con la fotocamera, sincronizzazione dati, riproduzione di contenuti multimediali, tracciamento della posizione, accesso al microfono, ecc.). Semplificata la definizione delle condizioni per attivare il caricamento dei dati, ad esempio, per caricare solo quando si è connessi tramite Wi-Fi.
- Il sistema interno di consegna dei messaggi broadcast per le applicazioni è ottimizzato per ridurre il consumo energetico e migliorare la reattività. È stato migliorato il ricevimento da parte delle applicazioni dei flussi di messaggi registrati: i messaggi possono essere messi in coda, aggregati (ad esempio, una serie di messaggi BATTERY_CHANGED sarà unita in uno solo) e consegnati solo dopo che l'applicazione esce dallo stato di cache.
- È stato aumentato il limite massimo per il numero di applicazioni memorizzate nella cache, riducendo così il numero di applicazioni avviate in modalità "fredda" (cioè non memorizzate in memoria e quindi avviate più lentamente). Per i dispositivi con 8 GB di RAM, dopo la modifica dei limiti, il numero di avvii "freddi" delle applicazioni è diminuito del 20%, mentre per quelli con 12 GB è diminuito del 30%.
- L'uso della funzionalità di esecuzione di operazioni a tempi precisi (exact alarms) nelle applicazioni richiede ora l'ottenimento di un'autorizzazione separata SCHEDULE_EXACT_ALARM, poiché l'uso di questa funzionalità può influire negativamente sulla durata della batteria e aumentare il consumo di risorse (per i compiti pianificati, si consiglia di utilizzare l'attivazione in un momento approssimativo). Le applicazioni con implementazioni di calendario e orario, che utilizzano l'attivazione a tempo preciso, devono ricevere l'autorizzazione USE_EXACT_ALARM al momento dell'installazione. Le pubblicazioni nel catalogo Google Play di applicazioni con autorizzazione USE_EXACT_ALARM sono consentite solo per programmi che implementano sveglie, timer e calendari con notifiche di eventi.
- È stata introdotta la possibilità di specificare impostazioni linguistiche legate a singole applicazioni. Gli sviluppatori di applicazioni possono ora modificare i parametri localeConfig tramite una chiamata a LocaleManager.setOverrideLocaleConfig per definire l'elenco delle lingue mostrate per l'applicazione nell'interfaccia di impostazione di Android.
- È stata aggiunta l'API Grammatical Inflection per semplificare l'inserimento di traduzioni di elementi dell'interfaccia che tengano conto delle lingue con sistemi di genere.
- Per prevenire l'intercettazione delle richieste intent da parte di applicazioni dannose, nella nuova versione l'invio di intent senza un'esplicita indicazione del pacchetto o del componente interno è vietato.
- È stata aumentata la sicurezza del caricamento dinamico del codice (DCL, Dynamic Code Loading): per evitare l'inserimento di codice dannoso nei file eseguibili caricati dinamicamente, questi file devono ora avere permessi di accesso che consentono solo la lettura.
- È vietata l'installazione di applicazioni dichiarate con una versione SDK inferiore a 23, il che consentirà di bloccare la by-pass delle restrizioni di autorizzazione attraverso il legame a API obsolete (la versione API 22 è vietata, poiché nella versione 23 (Android 6.0) è stato introdotto un nuovo modello di gestione degli accessi che consente di richiedere accesso ai sistemi risorse 'on the fly'. Le applicazioni già installate che utilizzano API obsolete continueranno a funzionare dopo l'aggiornamento di Android.
- È stato introdotto l'API Credential Manager, che consente di gestire l'accesso alle applicazioni utilizzando le credenziali di provider di autenticazione esterni. È stata implementata la tecnologia Passkeys, che consente all'utente di autenticarsi senza password utilizzando identificatori biometrico, come le impronte digitali o il riconoscimento facciale. È stata migliorata l'interfaccia di selezione dell'account.
- Nel Android Runtime (ART) è stato implementato il supporto per OpenJDK 17. Le librerie Java di base della piattaforma e gli strumenti per lo sviluppo delle applicazioni sono stati aggiornati a OpenJDK 17. È stato aggiunto il supporto per le funzionalità linguistiche e le classi Java disponibili in OpenJDK 17, come le classi di tipo record, le stringhe multilinea e le corrispondenze nel costrutto "instanceof".
- Nel Android Runtime sono stati adottati metodi di compressione più avanzati, che hanno consentito di ridurre la dimensione dei file in media del 9,3% senza compromettere le prestazioni.
- È stato cambiato il modo di aggiornare i certificati delle autorità di certificazione (CA). I certificati di sistema non saranno più legati al firmware, ma saranno consegnati in un pacchetto separato, aggiornato tramite Google Play. Questo approccio semplificherà il mantenimento di certificati aggiornati e la rimozione di certificati compromessi, evitando anche che i produttori dei dispositivi manipolino l'elenco dei certificati radice e rendendo il processo di aggiornamento indipendente da quello del firmware. D'altra parte, il nuovo metodo di consegna non consentirà all'utente di apportare modifiche ai certificati di sistema, anche se ha accesso root e controlla completamente il firmware.
Fonte: opennet.ru









