Android Studio 3.2 (settembre 2018)

Android Studio 3.2 è una release importante che include una serie di nuove funzionalità e miglioramenti.

3.2.1 (ottobre 2018)

Questo aggiornamento di Android Studio 3.2 include le seguenti modifiche e correzioni:

  • La versione di Kotlin inclusa è ora la 1.2.71.
  • La versione predefinita degli strumenti di compilazione è ora la 28.0.3.
  • Nella libreria di navigazione, i tipi di argomenti sono stati rinominati da type a argType.
  • Sono stati corretti i seguenti bug:
    • Quando si utilizza la libreria Data Binding, i nomi delle variabili con trattini bassi causavano errori di compilazione.
    • CMake causava errori in IntelliSense e in altre funzionalità di CLion.
    • L'aggiunta di un SliceProvider causava errori di compilazione nei progetti che non utilizzavano le librerie androidx.*.
    • Alcuni test delle unità Kotlin non venivano eseguiti.
    • Un problema con il data binding causava un PsiInvalidElementAccessException.
    • A volte gli elementi <merge> causavano l'arresto anomalo dell'editor del layout.

Problemi noti della versione 3.2.0

Nota:questi problemi sono stati risolti in Android Studio 3.2.1

  • Sconsigliamo vivamente di utilizzare Kotlin versione 1.2.70.

    La versione 1.2.61 di Kotlin corregge un bug che può causare il blocco di Android Studio, ma Kotlin 1.2.70 non include questa correzione.

    Le versioni di Kotlin 1.2.71 e successive, tuttavia, includono questa correzione.

  • Anche se in genere non è necessario specificare la versione degli strumenti di build, quando utilizzi il plug-in Android per Gradle 3.2.0 con renderscriptSupportModeEnabled impostato su true, devi includere quanto segue nel file build.gradle di ogni modulo:

    android.buildToolsVersion "28.0.3"

Assistente Novità

Un nuovo assistente ti informa sulle ultime modifiche in Android Studio.

L'assistente si apre quando avvii Android Studio dopo una nuova installazione o un aggiornamento se rileva nuove informazioni da mostrare. Puoi anche aprire l'assistente scegliendo Guida > Novità di Android Studio.

Android Jetpack

Android Jetpack aiuta ad accelerare lo sviluppo per Android con componenti, strumenti e indicazioni che eliminano le attività ripetitive e ti consentono di creare più rapidamente e facilmente app di alta qualità e testabili. Android Studio include i seguenti aggiornamenti per supportare Jetpack. Per saperne di più, consulta la documentazione di Jetpack.

Il nuovo editor di navigazione si integra con i componenti di navigazione di Android Jetpack per fornire una visualizzazione grafica per la creazione della struttura di navigazione della tua app. L'editor di navigazione semplifica la progettazione e l'implementazione della navigazione tra le destinazioni in-app.

In Android Studio 3.2, l'editor di navigazione è una funzionalità sperimentale. Per attivare l'editor di navigazione, fai clic su File > Impostazioni (Android Studio > Preferenze su Mac), seleziona la categoria Sperimentale nel riquadro a sinistra, seleziona la casella accanto ad Attiva editor di navigazione e riavvia Android Studio.

Per saperne di più, leggi la documentazione dell'editor di navigazione.

Migrazione ad AndroidX

Nell'ambito di Jetpack, stiamo eseguendo la migrazione delle librerie di supporto Android a una nuova libreria di estensioni Android utilizzando lo spazio dei nomi androidx. Per ulteriori informazioni, consulta la panoramica di AndroidX.

Android Studio 3.2 ti aiuta in questo processo con una nuova funzionalità di migrazione.

Per eseguire la migrazione di un progetto esistente ad AndroidX, scegli Refactor > Migrate to AndroidX. Se hai dipendenze Maven che non sono state migrate allo spazio dei nomi AndroidX, il sistema di compilazione di Android Studio converte automaticamente le dipendenze del progetto.

Il plug-in Android per Gradle fornisce i seguenti flag globali che puoi impostare nel file gradle.properties:

  • android.useAndroidX: se impostato su true, questo flag indica che vuoi iniziare a utilizzare AndroidX da questo momento in poi. Se il flag è assente, Android Studio si comporta come se fosse impostato su false.
  • android.enableJetifier: se impostato su true, questo flag indica che vuoi che gli strumenti (dal plug-in Android Gradle) supportino la conversione automatica delle librerie di terze parti esistenti come se fossero state scritte per AndroidX. Se il flag è assente, Android Studio si comporta come se fosse impostato su false.

Entrambi i flag sono impostati su true quando utilizzi il comando Migrate to AndroidX.

Se vuoi iniziare subito a utilizzare le librerie AndroidX e non devi convertire librerie di terze parti esistenti, puoi impostare il flag android.useAndroidX su true e il flag android.enableJetifier su false.

Android App Bundle

Android App Bundle è un nuovo formato di caricamento che include tutto il codice e le risorse compilati della tua app, ma rimanda la generazione e la firma dell'APK al Google Play Store.

Il nuovo modello di pubblicazione delle app di Google Play utilizza poi l'app bundle per generare e pubblicare APK ottimizzati per la configurazione del dispositivo di ogni utente, in modo che ogni utente scarichi solo il codice e le risorse necessari per eseguire l'app. Non è più necessario creare, firmare e gestire più APK e gli utenti ottengono download più piccoli e ottimizzati.

Inoltre, puoi aggiungere moduli delle funzionalità al progetto dell'app e includerli nell'app bundle. in modo che gli utenti possano scaricare e installare le funzionalità della tua app on demand.

Per creare un bundle, scegli Build > Build Bundle(s) / APK(s) > Build Bundle(s).

Per maggiori informazioni, incluse le istruzioni per creare e analizzare un Android App Bundle, consulta Android App Bundle.

Dati di esempio nell'editor di layout

Molti layout Android hanno dati di runtime che possono rendere difficile visualizzare l'aspetto di un layout durante la fase di progettazione dello sviluppo dell'app. Ora puoi visualizzare facilmente un'anteprima della tua visualizzazione nell'editor di layout con dati di esempio. Quando aggiungi una visualizzazione, viene visualizzato un pulsante sotto la visualizzazione nella finestra Struttura. Fai clic su questo pulsante per impostare gli attributi della visualizzazione in fase di progettazione. Puoi scegliere tra una serie di modelli di dati di esempio e specificare il numero di elementi di esempio con cui compilare la visualizzazione.

Per provare a utilizzare dati di esempio, aggiungi un RecyclerView a un nuovo layout, fai clic sul pulsante degli attributi in fase di progettazione sotto la visualizzazione e scegli una selezione dal carosello dei modelli di dati di esempio.

Sezioni

Slice offre un nuovo modo per incorporare porzioni della funzionalità della tua app in altre interfacce utente su Android. Ad esempio, gli Slice consentono di mostrare funzionalità e contenuti delle app nei suggerimenti della Ricerca Google.

Android Studio 3.2 include un modello integrato per aiutarti a estendere la tua app con le nuove API Slice Provider, nonché nuovi controlli lint per assicurarti di seguire le best practice durante la creazione degli slice.

Per iniziare, fai clic con il tasto destro del mouse su una cartella di progetto e scegli Nuovo > Altro > Slice Provider.

Per scoprire di più, incluso come testare le interazioni con gli Slice, consulta la Guida introduttiva agli Slice.

Kotlin 1.2.61

Android Studio 3.2 include Kotlin 1.2.61 e il nuovo SDK Android si integra meglio con Kotlin. Per saperne di più, consulta il blog per sviluppatori Android.

IntelliJ IDEA 2018.1.6

L'IDE Android Studio principale è stato aggiornato con i miglioramenti di IntelliJ IDEA tramite la release 2018.1.6.

Profiler Android

Prova le nuove funzionalità di Android Profiler in Android Studio 3.2.

Sessioni

Ora puoi salvare i dati di Profiler come sessioni da rivedere e ispezionare in un secondo momento. Il profiler conserva i dati della sessione fino al riavvio dell'IDE.

Quando registri una traccia del metodo o acquisisci un dump dell'heap, l'IDE aggiunge questi dati (insieme all'attività di rete dell'app) come voce separata alla sessione corrente e puoi passare facilmente da una registrazione all'altra per confrontare i dati.

Traccia di sistema

In Profiler CPU, seleziona la nuova configurazione Traccia sistema per esaminare l'attività della CPU di sistema e dei thread del dispositivo. Questa configurazione di traccia si basa su systrace ed è utile per analizzare i problemi a livello di sistema, ad esempio i problemi di scattosità dell'interfaccia utente.

Quando utilizzi questa configurazione di tracciamento, puoi contrassegnare visivamente le routine di codice importanti nella sequenza temporale del profiler strumentando il codice C/C++ con l'API di tracciamento nativo o il codice Java con la classe Trace.

Ispezionare i riferimenti JNI in Profiler di memoria

Se esegui il deployment della tua app su un dispositivo con Android 8.0 (livello API 26) o versioni successive, ora puoi esaminare le allocazioni di memoria per il codice JNI della tua app utilizzando Memory Profiler.

Mentre l'app è in esecuzione, seleziona una parte della sequenza temporale che vuoi esaminare e seleziona Heap JNI dal menu a discesa sopra l'elenco delle classi, come mostrato di seguito. Puoi quindi esaminare gli oggetti nell'heap come faresti normalmente e fare doppio clic sugli oggetti nella scheda Allocation Call Stack per vedere dove le referenze JNI vengono allocate e rilasciate nel codice.

Importare, esportare e ispezionare i file di dump dell'heap di memoria

Ora puoi importare, esportare e ispezionare i file di dump dell'heap di memoria .hprof creati con Memory Profiler.

Importa il file .hprof facendo clic su Avvia nuova sessione del profiler nel riquadro Sessioni del profiler e poi selezionando Carica da file. Puoi quindi esaminare i relativi dati in Memory Profiler come faresti con qualsiasi altro dump dell'heap.

Per salvare i dati del dump dell'heap da esaminare in un secondo momento, utilizza il pulsante Esporta dump dell'heap a destra della voce Dump dell'heap nel riquadro Sessioni. Nella finestra di dialogo Esporta come visualizzata, salva il file con l'estensione del nome file .hprof.

Registra l'attività della CPU durante l'avvio dell'app

Ora puoi registrare l'attività della CPU durante l'avvio dell'app nel seguente modo:

  1. Seleziona Esegui > Modifica configurazioni dal menu principale.
  2. Nella scheda Profilazione della configurazione di esecuzione che preferisci, seleziona la casella accanto a Avvia la registrazione di una traccia del metodo all'avvio.
  3. Seleziona una configurazione di registrazione della CPU da utilizzare dal menu a discesa.
  4. Esegui il deployment dell'app su un dispositivo con Android 8.0 (livello API 26) o versioni successive selezionando Esegui > Profila.

Esportare le tracce della CPU

Dopo aver registrato l'attività della CPU con il Profiler CPU, puoi esportare i dati come un file .trace da condividere con altri o da esaminare in un secondo momento.

Per esportare una traccia dopo aver registrato l'attività della CPU:

  1. Fai clic con il tasto destro del mouse sulla registrazione che vuoi esportare dalla sequenza temporale della CPU.
  2. Seleziona Esporta traccia dal menu a discesa.
  3. Scegli dove vuoi salvare il file, quindi fai clic su Salva.

Importare e ispezionare i file di traccia della CPU

Ora puoi importare ed esaminare i file .trace creati con l'API Debug o il profilatore CPU. (Al momento, non è possibile importare le registrazioni di System Trace).

Importa il file di traccia facendo clic su Avvia nuova sessione del profiler nel riquadro Sessioni del profiler e poi selezionando Carica da file. Puoi quindi esaminare i dati nel Profiler CPU in modo simile a quello che faresti normalmente, con le seguenti eccezioni:

  • L'attività della CPU non è rappresentata lungo la sequenza temporale della CPU.
  • La cronologia delle attività del thread indica solo dove sono disponibili i dati di traccia per ogni thread e non gli stati effettivi del thread (come in esecuzione, in attesa o inattivo).

Registra l'attività della CPU utilizzando l'API Debug

Ora puoi avviare e interrompere la registrazione dell'attività della CPU in CPU Profiler strumentando la tua app con l'API Debug. Dopo aver eseguito il deployment dell'app su un dispositivo, il profiler inizia automaticamente a registrare l'attività della CPU quando l'app chiama startMethodTracing(String tracePath), e smette di registrare quando l'app chiama stopMethodTracing(). Durante la registrazione dell'attività della CPU attivata utilizzando questa API, Profiler CPU mostra API di debug come configurazione di registrazione della CPU selezionata.

Energy Profiler

Energy Profiler mostra una visualizzazione dell'utilizzo di energia stimato della tua app, nonché degli eventi di sistema che influiscono sull'utilizzo di energia, come wakelock, sveglie e job.

Energy Profiler viene visualizzato come una nuova riga nella parte inferiore della finestra Profiler quando esegui l'app su un dispositivo connesso o su Android Emulator con Android 8.0 (API 26) o versioni successive.

Fai clic sulla riga Energia per massimizzare la visualizzazione di Profiler energetico. Posiziona il puntatore del mouse su una barra della cronologia per visualizzare una suddivisione del consumo energetico in base alle risorse CPU, rete e posizione (GPS), nonché gli eventi di sistema pertinenti.

Gli eventi di sistema che influiscono sul consumo energetico sono indicati nella cronologia Sistema sotto la cronologia Energia. I dettagli degli eventi di sistema all'interno dell'intervallo di tempo specificato vengono visualizzati nel riquadro degli eventi quando selezioni un intervallo di tempo nella sequenza temporale Energia.

Per visualizzare lo stack di chiamate e altri dettagli di un evento di sistema, ad esempio un wakelock, selezionalo nel riquadro degli eventi. Per passare al codice responsabile di un evento di sistema, fai doppio clic sulla voce nello stack di chiamate.

Controllo lint

Android Studio 3.2 include molte funzionalità nuove e migliorate per il controllo lint.

I nuovi controlli lint ti aiutano a trovare e identificare problemi di codice comuni, che vanno da avvisi su potenziali problemi di usabilità a errori di alta priorità relativi a potenziali vulnerabilità della sicurezza.

Lint controlla l'interoperabilità Java/Kotlin

Per assicurarti che il codice Java interagisca bene con il codice Kotlin, i nuovi controlli lint applicano le best practice descritte nella guida all'interoperabilità di Kotlin. Esempi di questi controlli includono la ricerca della presenza di annotazioni di nullabilità, l'utilizzo di parole chiave hard di Kotlin e il posizionamento dei parametri lambda per ultimi.

Per attivare questi controlli, fai clic su File > Impostazioni (Android Studio > Preferenze su Mac) per aprire la finestra di dialogo Impostazioni, vai alla sezione Editor > Inspections > Android > Lint > Interoperability > Kotlin Interoperability e seleziona le regole che vuoi attivare.

Per abilitare questi controlli per le build da riga di comando, aggiungi quanto segue al file build.gradle:

        android {
            lintOptions {
                check 'Interoperability'
            }
        }
        
      

Controlli lint per gli snippet

I nuovi controlli lint per gli slice ti aiutano a creare gli slice correttamente. Ad esempio, i controlli lint ti avvisano se non hai assegnato un'azione principale a uno Slice.

Nuovo target Gradle

Utilizza il nuovo lintFix task Gradle per applicare tutte le correzioni sicure suggerite dal controllo lint direttamente al codice sorgente. Un esempio di controllo lint che suggerisce una correzione sicura da applicare è SyntheticAccessor.

Aggiornamenti dei metadati

Sono stati aggiornati vari metadati, come il controllo del servizio di trasmissione, per consentire ai controlli lint di funzionare con Android 9 (livello API 28).

Avviso se esegui lint su una nuova variante

Lint ora registra la variante e la versione con cui viene registrata una base di riferimento e ti avvisa se lo esegui su una variante diversa da quella con cui è stata creata la base di riferimento.

Miglioramenti ai controlli lint esistenti

Android Studio 3.2 include molti miglioramenti ai controlli lint esistenti. Ad esempio, i controlli del ciclo delle risorse ora si applicano a tipi di risorse aggiuntivi e il rilevatore di traduzioni può trovare traduzioni mancanti al volo, nell'editor.

ID problema più rilevabili

Gli ID problema ora vengono visualizzati in più posizioni, inclusa la finestra Risultati dell'ispezione. In questo modo, è più facile trovare le informazioni necessarie per attivare o disattivare controlli specifici tramite lintOptions in build.gradle.

Per ulteriori informazioni, consulta Configurare le opzioni di lint con Gradle.

Data Binding V2

Il data binding V2 ora è abilitato per impostazione predefinita ed è compatibile con la versione 1. Ciò significa che, se hai dipendenze di libreria che hai compilato con la versione 1, puoi utilizzarle con i progetti che utilizzano Data Binding V2. Tuttavia, tieni presente che i progetti che utilizzano la versione 1 non possono utilizzare dipendenze compilate con la versione 2.

D8 desugaring

In Android Studio 3.1, abbiamo integrato il passaggio di desugaring nello strumento D8 come funzionalità sperimentale, riducendo il tempo di compilazione complessivo. In Android Studio 3.2, il desugaring con D8 è attivo per impostazione predefinita.

Nuovo riduttore di codice

R8 è un nuovo strumento per la riduzione e l'offuscamento del codice che sostituisce ProGuard. Puoi iniziare a utilizzare la versione di anteprima di R8 includendo quanto segue nel file gradle.properties del progetto:

      android.enableR8 = true
    

ABI predefiniti modificati per gli APK multipli

Quando crei più APK che hanno come target ABI diverse, il plug-in non genera più APK per le seguenti ABI per impostazione predefinita: mips, mips64 e armeabi.

Se vuoi creare APK che hanno come target queste ABI, devi utilizzare NDK r16b o versioni precedenti e specificare le ABI nel file build.gradle, come mostrato di seguito:

    splits {
        abi {
            include 'armeabi', 'mips', 'mips64'
            ...
        }
    }
    
    splits {
        abi {
            include("armeabi", "mips", "mips64")
            ...
        }
    }
    

Nota: questa modifica del comportamento è inclusa anche in Android Studio 3.1 RC1 e versioni successive.

Funzionalità dell'editor migliorate per i file di build CMake

Se utilizzi CMake per aggiungere codice C e C++ al tuo progetto, Android Studio ora include funzionalità dell'editor migliorate per aiutarti a modificare gli script di build CMake, ad esempio:

  • Evidenziazione della sintassi e completamento del codice:L'IDE ora evidenzia e suggerisce il completamento del codice per i comandi CMake comuni. Inoltre, puoi passare a un file facendo clic su di esso mentre premi il tasto Controllo (Comando su Mac).
  • Riformattazione del codice:ora puoi utilizzare l'opzione di riformattazione del codice di IntelliJ per applicare gli stili di codice agli script di build CMake.
  • Refactoring sicuro:gli strumenti di refactoring integrati nell'IDE ora controllano anche se stai rinominando o eliminando file a cui fai riferimento negli script di build CMake.

Quando utilizzi la finestra Progetto nelle versioni precedenti di Android Studio, puoi navigare e ispezionare solo i file di intestazione appartenenti alle librerie che crei da un progetto locale. Con questa release, ora puoi anche visualizzare e ispezionare i file di intestazione inclusi nelle dipendenze delle librerie C/C++ esterne che importi nel progetto dell'app.

Se includi già codice e librerie C/C++ nel tuo progetto, apri la finestra Project sul lato sinistro dell'IDE selezionando View > Tool Windows > Project dal menu principale e seleziona Android dal menu a discesa. Nella directory cpp, tutte le intestazioni che rientrano nell'ambito del progetto dell'app sono organizzate nel nodo include per ciascuna delle dipendenze della libreria C/C++ locale, come mostrato di seguito.

Multidex nativo attivato per impostazione predefinita

Le versioni precedenti di Android Studio attivavano il multidex nativo durante il deployment della versione di debug di un'app su un dispositivo con livello API Android 21 o versioni successive. Ora, che tu stia eseguendo il deployment su un dispositivo o creando un APK per la release, il plug-in Android per Gradle attiva il multidex nativo per tutti i moduli che impostano minSdkVersion=21 o versioni successive.

AAPT2 è stato spostato nel repository Maven di Google

A partire da Android Studio 3.2, l'origine di AAPT2 (Android Asset Packaging Tool 2) è il repository Maven di Google.

Per utilizzare AAPT2, assicurati di avere una dipendenza google() nel file build.gradle, come mostrato qui:

    buildscript {
        repositories {
            google() // here
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.0'
        }
    }
    allprojects {
        repositories {
            google() // and here
            jcenter()
        }
    }
    
    buildscript {
        repositories {
            google() // here
            jcenter()
        }
        dependencies {
            classpath("com.android.tools.build:gradle:3.2.0")
        }
    }
    allprojects {
        repositories {
            google() // and here
            jcenter()
        }
    }
    

La nuova versione di AAPT2 risolve molti problemi, tra cui una migliore gestione dei caratteri non ASCII su Windows.

Rimozione della configurazione su richiesta

La preferenza Configura on demand è stata rimossa da Android Studio.

Android Studio non passa più l'argomento --configure-on-demand a Gradle.

Assistente per la connessione ADB

Il nuovo Assistente connessione ADB fornisce istruzioni passo passo per aiutarti a configurare e utilizzare un dispositivo tramite la connessione Android Debug Bridge (ADB).

Per avviare l'assistente, scegli Strumenti > Assistente connessione.

L'assistente per la connessione ADB fornisce istruzioni, controlli contestuali e un elenco di dispositivi connessi in una serie di pagine nel riquadro Assistente.

Miglioramenti dell'emulatore

Ora puoi salvare e caricare snapshot di un AVD (Android Virtual Device) in qualsiasi momento in Android Emulator, rendendo facile e veloce riportare un dispositivo emulato a uno stato noto per i test. Quando modifichi un AVD utilizzando Gestione AVD, puoi specificare quale snapshot AVD caricare all'avvio dell'AVD.

I controlli per salvare, caricare e gestire gli snapshot AVD si trovano ora nella scheda Snapshot nella finestra Controlli estesi dell'emulatore.

Per maggiori dettagli, vedi Snapshot.

Per ulteriori informazioni sulle novità e sulle modifiche apportate all'emulatore, consulta le note di rilascio dell'emulatore.