Pubblicato da Dave Burke, VP of Engineering
Durante il Mobile World Congress abbiamo osservato che l'ecosistema Android composto da sviluppatori, produttori di dispositivi e microprocessori continua a creare esperienze stupefacenti per gli utenti di tutto il mondo.
Guardando al futuro, siamo felici di condividere la prima anteprima per sviluppatori di
Android P, la nuova versione di Android. Si tratta di una prima build di riferimento solo per gli sviluppatori: voi siete i nostri revisori e tester più affidabili ;-) È fondamentale ricevere i commenti dalla nostra community di sviluppatori per aiutarci a far evolvere la piattaforma in modo da soddisfare le vostre esigenze. Vorremmo farvi iniziare a mettere alla prova le nuove funzionalità e le API nell'anteprima Android P e, come sempre, non vediamo l'ora di ricevere feedback e idee: forniteci
i vostri preziosissimi suggerimenti!
La prima anteprima per sviluppatori di Android P è solo l'inizio: avremo molto più da condividere in occasione del
Google I/O a maggio, quindi continuate a seguirci!
Diamo uno sguardo ad alcune delle funzionalità più interessanti presenti in questa prima anteprima di Android P che desideriamo farvi provare e
in merito alla quale aspettiamo di ricevere le vostre opinioni.
Indoor positioning grazie a Wi-Fi RTT
L'aumento dell'accuratezza dell'indoor positioning, un'annosa sfida, spalanca nuove opportunità ai servizi di localizzazione. Android P aggiunge il supporto della piattaforma per il protocollo Wi-Fi IEEE 802.11mc, anche noto come WiFi Round-Trip-Time o RTT, per consentirvi di approfittare della funzionalità di indoor positioning nelle vostre app.
Sui dispositivi che supportano Android P dotati di supporto hardware, permesso di localizzazione e servizio di localizzazione abilitati, le app possono utilizzare le
API RTT per misurare la distanza dagli access point (AP) Wi-Fi presenti nelle vicinanze. Non è necessario che il dispositivo si colleghi agli AP per utilizzare RTT; inoltre, per mantenere la privacy, solo il telefono può determinare la distanza, non gli AP.
Conoscendo la distanza da 3 o più AP, potete calcolare la posizione del dispositivo con un'approssimazione di 1-2 metri. Grazie a questa notevole precisione, potete creare nuove esperienze come la navigazione in-building, i servizi di localizzazione precisi come il controllo vocale disambiguato (ad es. "Accendi la luce") e le informazioni basate sulla localizzazione (ad es. "Sono disponibili offerte speciali per questo prodotto?").
Supporto per display cutout
Adesso le app possono sfruttare a pieno gli schermi dei dispositivi più recenti con i contenuti a schermo intero. Abbiamo aggiunto il display cutout (meglio noto come display notch) nella piattaforma insieme alle API che potete utilizzare per gestire la visualizzazione dei contenuti.
Il supporto per il display cutout funziona senza difficoltà per le app, insieme al sistema che gestisce l'altezza della barra di stato per separare i contenuti dal cutout. Se avete contenuti immersivi cruciali, potete utilizzare anche le
nuove API per controllare la forma del cutout e richiedere un layout a schermo intero intorno a questo. Potete verificare se l'attuale dispositivo è dotato di un cutout chiamando
getDisplayCutout() e determinando la posizione e la forma dell'area del cutout utilizzando
DisplayCutout. Un nuovo attributo del layout della finestra
layoutInDisplayCutoutMode, vi permette di indicare al sistema come e quando presentare i contenuti rispetto all'area del cutout. I dettagli vengono presentati
qui.
Per rendere più semplici la creazione e l'esecuzione di test sul supporto per cutout per le vostre app, abbiamo aggiunto un'opzione per sviluppatori che simula un cutout su qualsiasi dispositivo. Consigliamo di eseguire test sulle app esistenti, dopo aver abilitato il display cutout, per assicurarvi che i contenuti vengano visualizzati correttamente.
Le app con contenuti immersivi possono visualizzare i contenuti a schermo intero sui dispositivi dotati di display cutout.
Notifiche di messaggistica migliorate
In Android P abbiamo attribuito una maggiore priorità al miglioramento della visibilità e delle funzionalità relative alle notifiche. Provate il nuovo stile delle notifiche
MessagingStyle: mette in evidenza i mittenti dei messaggi e il modo in cui potete rispondere. Potete mostrare conversazioni, inserire foto e adesivi e suggerire anche risposte rapide smart (ovvero coerenti con la conversazione). Consultate i dettagli
qui.
Adesso nelle notifiche MessagingStyle potete mostrare le conversazioni e le risposte rapide smart [a sinistra] e anche inserire immagini e adesivi [a destra].
API Multi-camera
Adesso potete contemporaneamente accedere allo streaming da
due o più telecamere fisiche su dispositivi che eseguono Android P. Sui dispositivi dotati di doppia fotocamera anteriore o posteriore, potete creare delle funzionalità innovative, prima impossibili da realizzare con un'unica fotocamera, come eseguire lo zoom senza difficoltà, l'effetto bokeh e la visione stereoscopica. Inoltre, l'API vi consente di richiamare uno stream logico o fuso della fotocamera che automaticamente passa tra due o più fotocamere. Siamo impazienti di vedere le vostre nuove ed entusiasmanti creazioni poiché i dispositivi con Android P che supportano più fotocamere arriveranno sul mercato l'anno prossimo.
Altri miglioramenti della fotocamera includono i nuovi
parametri della sessione che aiutano a ridurre i ritardi durante l'acquisizione iniziale e la condivisione di Surface che consente ai client della fotocamera di gestire le varie situazioni senza la necessità di arrestarne e avviarne lo streaming. Abbiamo aggiunto anche delle API per il
supporto per Flash basato sul display e l'accesso agli
OIS timestamp per la stabilizzazione e gli effetti speciali delle immagini a livello di app.
ImageDecoder per bitmap e drawable
Android P vi consente di decodificare le immagini in bitmap o drawable in modo più semplice:
ImageDecoder sostituisce
BitmapFactory ImageDecoder vi consente di creare un bitmap o drawable da un buffer di byte, file o URI. Offre diversi vantaggi rispetto a BitmapFactory, incluso il supporto per il ridimensionamento esatto, la decodifica in un unico passaggio su memoria hardware, il supporto per l'elaborazione successiva a livello di decodifica e la decodifica di immagini animate.
Potete decodificare e ridimensionare fino alla dimensione esatta semplicemente richiamando
setResize() con le dimensioni target. Potete anche richiamare
getSampledSize() per ottenere le dimensioni dell'immagine con una frequenza di campionamento specifica e poi ridimensionarla fino alle dimensioni richieste. Se desiderate elaborare successivamente un'immagine, come ad esempio applicare bordi arrotondati per le maschere circolari oppure effetti più complicati, potete passare ImageDecoder ad
android.graphics.PostProcessor. Inoltre, potete creare dei drawable direttamente con
ImageDecoder.decodeDrawable(). Se l'immagine codificata è una GIF o un WebP animato, il drawable sarà un'istanza del nuovo
AnimatedImageDrawable.
Video HDR VP9, compressione dell'immagine HEIF e API Media
Android P aggiunge il supporto incorporato per HDR VP9 Profile 2, quindi adesso potete offrire filmati abilitati per HDR ai vostri utenti di YouTube, Play Movies e altre risorse su dispositivi abilitati per HDR.
Non vediamo l'ora di aggiungere alla piattaforma la codifica dell'immagine ad alta efficienza (heic)
HEIF. HEIF è un formato famoso per le foto che migliora la compressione per risparmiare in termini di spazio di archiviazione e dati di rete. Grazie al supporto della piattaforma sui dispositivi con Android P, è molto semplice inviare e utilizzare immagini HEIF dal server di backend. Dopo esservi assicurati che l'app è compatibile con questo formato di dati per la condivisione e la visualizzazione, provate il formato HEIF per archiviare le immagini presenti nell'app. Potete eseguire una conversione dal formato jpeg a quello heic utilizzando
ImageDecoder o
BitmapFactory per ottenere un bitmap da jpeg e potete utilizzare
HeifWriter nella nuova versione alpha della libreria di supporto per scrivere immagini fisse HEIF dal buffer di byte YUV, Surface o Bitmap.
Stiamo lavorando anche al miglioramento e al refactoring delle API multimediali per renderle più semplici da sviluppare e integrare. Entro la fine dell'anno verranno presentati ulteriori dettagli.
Sensibilità del costo dei dati in JobScheduler
JobScheduler è un servizio centrale di Android che consente di gestire le attività pianificate o le modifiche di
sospensione,
standby delle app e
limiti di background. In Android P, JobScheduler gestisce in modo migliorato i job relativi alla rete per gli utenti, coordinandosi con i segnali di stato della rete forniti separatamente dagli operatori.
Adesso i job sono in grado di dichiarare la loro dimensione stimata dei dati, eseguire il prefetch del segnale e specificare i requisiti di rete dettagliati, invece gli operatori possono segnalare le reti come congestionate o libere. Quindi JobScheduler gestisce il lavoro in base allo stato della rete. Ad esempio, quando una rete è congestionata, JobScheduler potrebbe rinviare richieste di rete di grandi dimensioni. Quando è libera, può eseguire attività di prefetch per migliorare l'esperienza utente, come l'esecuzione di prefetch sui titoli.
Quando aggiungete dei job, provate a utilizzare
setEstimatedNetworkBytes(),
setIsPrefetch() e
setRequiredNetwork() per consentire a JobScheduler di gestire il lavoro correttamente. Durante l'esecuzione del job, assicuratevi di utilizzare l'oggetto di rete restituito da
JobParameters.getNetwork(); in caso contrario, utilizzerete implicitamente la rete predefinita del dispositivo che potrebbe non soddisfare i requisiti determinando un utilizzo dei dati non intenzionale.
API Neural Networks 1.1
Abbiamo introdotto l'
API Neural Networks in Android 8.1 per accelerare il machine learning su Android. In Android P, stiamo ampliando e migliorando questa API, aggiungendo un supporto per nove nuovi strumenti: Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub e Squeeze. Se avete a disposizione un dispositivo Pixel 2, adesso la build DP1 include un driver Qualcomm Hexagon HVX dotato di accelerazione per i modelli quantizzati.
Miglioramenti della compilazione automatica
In Android P continuiamo a migliorare il framework Compilazione automatica in base ai feedback di utenti e sviluppatori. Insieme alla correzione dei bug principali, questa versione include nuove API che consentono agli strumenti per la gestione delle password di migliorare l'esperienza utente relativa alla compilazione automatica, come
filtrazione di set di dati,
sanificazione di input e
modalità di compatibilità migliori. In particolare, la modalità di compatibilità ha un forte impatto sugli utenti finali perché consente agli strumenti per la gestione delle password di adottare un approccio basato sull'accessibilità nelle app che non sono ancora dotate di un supporto completo di compilazione automatica, ma al contempo non influiscono sulle prestazioni o sulla sicurezza. Tutti i dettagli sulle novità sono riportati
qui.
API Open Mobile per pagamenti NFC e transazioni sicure
Android P aggiunge in Android un'implementazione dell'
API GlobalPlatform Open Mobile. Sui dispositivi supportati, le app possono utilizzare l'
API OMAPI per accedere agli elementi sicuri (SE) per abilitare i pagamenti tramite smart card e altri servizi sicuri. Uno strato di astrazione dall'hardware (HAL) fornisce l'API sottostante per l'enumerazione di una varietà di elementi sicuri (eSE, UICC e altri) disponibili.
In Android P, continuiamo il nostro investimento a lungo termine per rendere Android la migliore piattaforma per sviluppatori.
Sicurezza per le app
In Android P stiamo passando a un'interfaccia utente più uniforme per l'autenticazione mediante impronta digitale su app e dispositivi. Adesso Android offre una finestra di dialogo di sistema standard per richiedere all'utente di toccare il sensore di impronte digitali, gestendo il testo e il posizionamento a seconda del dispositivo. Le app possono attivare la finestra di dialogo del sistema per le impronte digitali utilizzando la nuova API
FingerprintDialog. Consigliamo di passare alla nuova finestra di dialogo del sistema il prima possibile.
Come parte di uno sforzo più ampio per spostare tutto il traffico di rete da cleartext (HTTP non cifrato) a TLS, stiamo anche cambiando le impostazioni predefinite per la
configurazione di sicurezza della rete per bloccare tutto il traffico cleartext. Se utilizzate una configurazione di sicurezza della rete, adesso dovrete eseguire le connessioni tramite LTS, a meno che non diate il consenso esplicito per cleartext per domini specifici.
Privacy per gli utenti
Per garantire la privacy, Android P non consente alle app inattive di accedere a microfono, fotocamera e a tutti i sensori
SensorManager. Mentre l'UID delle app è inattivo, il microfono segnala audio vuoto e i sensori interrompono il reporting di eventi. Le fotocamere utilizzate dalle app vengono disconnesse e genereranno un errore se l'app tenta di utilizzarle. Nella maggior parte dei casi, queste restrizioni non dovrebbero introdurre nuovi problemi per le app esistenti, ma consigliamo di rimuovere tali richieste dalle app.
Inoltre, abiliteremo la crittografia dei backup di Android con un segreto sul lato client. Questa funzionalità è ancora in fase di sviluppo attivo e verrà lanciata in una release futura di anteprima di Android P.
A più lungo termine, stiamo lavorando per offrire supporto per la randomizzazione per rete di MAC Address associati alla piattaforma. Sui dispositivi supportati che eseguono Android P, potete abilitare questa funzionalità in via sperimentale, disponibile come nuova opzione per sviluppatori, per eseguire dei test.
Inoltre, Android P offre all'utente il controllo sull'accesso all'identificatore build.serial della piattaforma mettendolo dietro l'autorizzazione
READ_PHONE_STATE. L'accesso diretto a questo identificatore è stato reso
obsoleto a partire da Android 8.0. Per accedere all'identificatore build.serial, dovete utilizzare il metodo
Build.getSerial()
.
Prestazioni di ART
Stiamo lavorando per offrire miglioramenti a livello di prestazioni ed efficienza a tutte le app tramite il runtime ART. Abbiamo ampliato l'utilizzo di ART per i profili di esecuzione per ottimizzare le app e ridurre la quantità di memoria occupata da parte del codice dell'app compilato. Adesso ART utilizza le informazioni del profilo per la riscrittura sul dispositivo di file DEX con riduzioni fino all'11% su un'ampia gamma di app utilizzate di frequente. Prevediamo che tali riduzioni siano strettamente correlate alle riduzioni dell'uso della memoria DEX del sistema e a tempi di avvio delle app più rapidi.
Kotlin ottimizzato
Kotlin è un
linguaggio avanzato su Android e, se non lo avete già fatto, dovreste assolutamente provarlo! Abbiamo dedicato un impegno costante a Kotlin in Android e continuiamo ad ampliare il supporto, inclusa l'ottimizzazione delle prestazioni del codice. In Android P potrete osservare i primi risultati di questo lavoro: abbiamo migliorato diverse ottimizzazioni del compilatore, in particolare quelle che hanno come obiettivo i loop, al fine di ottenere prestazioni migliori. Stiamo continuando a collaborare con JetBrains per ottimizzare il codice generato di Kotlin. Potete ottenere tutti gli ultimi miglioramenti relativi alle prestazioni di Kotlin mantenendo aggiornato il plug-in di Kotlin di Android Studio.
Efficienza energetica
In Android P continuiamo a perfezionare le funzioni di
sospensione,
standby delle app e
limiti di background per migliorare ulteriormente la durata della batteria. Assicuratevi di provare le app con queste funzioni attivate e di inviarci i vostri feedback.
Obiettivo: Android moderno
Android P è il risultato delle nostre iniziative a più lungo termine volte a modernizzare i fondamenti di Android e le app che lo eseguono. Come abbiamo annunciato
di recente, Google Play richiederà a tutti gli aggiornamenti delle app di avere come base Android Oreo (
targetSdkVersion 26 o versioni successive) entro novembre 2018, insieme al supporto per l'hardware a 64 bit che si profila all'orizzonte per il 2019.
In linea con questi cambiamenti, Android P avvertirà gli utenti mediante una finestra di dialogo quando installano un'app su una piattaforma precedente ad Android 4.2 (targetSdkVersion precedente alla 17) e le versioni future della piattaforma continueranno ad aumentare questo limite minimo. Stiamo incoraggiando tutti gli sviluppatori Android a iniziare subito a programmare la migrazione ad API 26 e a cominciare il lavoro di migrazione il prima possibile. Ecco un
elenco di controllo delle risorse per ottenere aiuto e assistenza: non vediamo l'ora di vedere le vostre app ottenere il massimo dalla versione moderna di Android.
Miglioramento della compatibilità delle app tramite le API pubbliche
Un problema fondamentale per gli utenti e gli sviluppatori è la compatibilità delle app: assicurarsi che le app siano pronte per le nuove versioni della piattaforma non appena queste vengono pubblicate, senza incorrere in arresti anomali per gli utenti e distribuzioni di emergenza per gli sviluppatori. Le app che utilizzano le API pubbliche di Android da SDK o NDK hanno buone probabilità di essere compatibili, a differenza delle app che utilizzano interfacce e librerie Android private.
Grazie ad Android P stiamo avviando un
processo graduale per limitare l'accesso a interfacce non SDK selezionate, chiedendo agli sviluppatori (compresi i team dedicati alle app all'interno di Google) di utilizzare gli equivalenti pubblici. Nei casi in cui non sia presente un equivalente pubblico per una situazione specifica,
informateci: vogliamo assicurarci che questo processo sia il più uniforme possibile per gli sviluppatori, infatti utilizzeremo i vostri feedback per garantire che la distribuzione iniziale interessi solo le API nei casi in cui gli sviluppatori possono migrare facilmente verso alternative pubbliche. Ulteriori informazioni sulle
limitazioni sono disponibili qui.
Prima di tutto,
rendete la vostra app compatibile per fornire agli utenti una transizione semplice ad Android P. È sufficiente scaricare un'
immagine del sistema del dispositivo o del sistema emulatore, installare la vostra app corrente ed eseguire il test: l'applicazione dovrebbe funzionare senza problemi, essere visualizzata in modo appropriato e gestire correttamente le
modifiche di comportamento. Dopo aver eseguito tutti gli aggiornamenti necessari, consigliamo di pubblicare subito l'app su Google Play senza cambiare la piattaforma target.
Ricordate: non avete bisogno di un dispositivo Pixel supportato per eseguire i test o sviluppare su Android P. Per la maggior parte delle situazioni, consigliamo vivamente di
impostare un dispositivo virtuale Android sull'Android Emulator come ambiente di test. Se non avete provato l'emulatore di recente, vi accorgerete che è incredibilmente veloce, si avvia in meno di 6 secondi, è conveniente da utilizzare e potete anche modellare gli schermi di nuova generazione, come gli schermi lunghi e quelli con il cutout della fotocamera.
Quindi,
cambiate la piattaforma target dell'app in "P" ed eseguitela grazie all'esperienza completa offerta da Android P. Impostate targetSdkVersion dell'app su "P" e compileSdkVersion su android-P, build e test. Assicuratevi di leggere le modifiche del comportamento per le app che hanno come piattaforma di base P per individuare le aree su cui desiderate eseguire dei test e che potrebbero dover essere modificate.
Quando siete pronti
immergetevi in Android P e scoprite le
nuove funzionalità e API che potete sfruttare a pieno nelle vostre app. Per facilitare l'esplorazione delle nuove API, consultate il
rapporto sulle differenze delle API e il
riferimento API di Android P. Visitate il sito
anteprima per sviluppatori P per dettagli sulla
tempistica dell'anteprima e sulle
risorse di supporto. Inoltre, scoprite
questo video che evidenzia le novità presenti in Android P per gli sviluppatori.
Per iniziare a creare con Android P, scaricate SDK e gli strumenti dell'anteprima per sviluppatori P in Android Studio 3.1 oppure utilizzate l'ultima versione canary di
Android Studio 3.2. Stiamo inoltre rilasciando una
versione alfa della libreria di supporto 28.0.0 di prova.
L'anteprima per sviluppatori Android P include un SDK aggiornato con immagini di sistema per il testing sull'Android Emulator ufficiale e sui dispositivi Pixel, Pixel XL Pixel 2 e Pixel 2 XL.
Abbiamo in programma di aggiornare regolarmente immagini di anteprima del sistema e di SDK per tutta la durata dell'anteprima. Questa versione iniziale è soltanto per sviluppatori e non è intesa per l'utilizzo quotidiano o per gli utenti, quindi verrà resa disponibile soltanto mediante
download manuale e flash.
Download e istruzioni sono disponibili qui.
In prossimità della pubblicazione del prodotto finale, inviteremo anche gli utenti a provarlo e quando sarà il momento apriremo le iscrizioni tramite Android Beta. Continuate a seguirci per ulteriori dettagli, ma tenete presente che Android Beta non è attualmente disponibile per Android P.
Come sempre, il vostro feedback è fondamentale quindi
fateci sapere cosa ne pensate. Prima ci invierete le nostre opinioni, maggiori saranno le integrazioni che potremo inserire nella versione finale. Eventuali problemi possono essere
segnalati qui. Abbiamo a disposizione delle hotlist per l'invio di
problemi relativi alla piattaforma,
alla compatibilità delle app e
a SDK di terzi.