Android Studio 3.2 (settembre 2018)

Android Studio 3.2 è una release principale 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 in bundle di Kotlin ora è 1.2.71.
  • La versione predefinita degli strumenti di creazione è ora 28.0.3.
  • Nella libreria di navigazione, i tipi di argomenti sono stati rinominati da type a argType.
  • Sono stati risolti i seguenti bug:
    • Quando utilizzi la libreria di associazione dati, i nomi delle variabili con trattini bassi causavano errori di compilazione.
    • CMake stava causando il mancato funzionamento di IntelliSense e di altre funzionalità di CLion.
    • L'aggiunta di SliceProvider causava errori di compilazione nei progetti che non utilizzavano le librerie androidx.*.
    • Alcuni test delle unità Kotlin non venivano eseguiti.
    • Un problema con l'associazione di dati causava un PsiInvalidElementAccessException.
    • A volte gli elementi <merge> causavano l'arresto anomalo dell'Editor di layout.

Problemi noti 3.2.0

Nota: questi problemi sono stati risolti in Android Studio 3.2.1

  • Sconsigliamo vivamente di utilizzare Kotlin versione 1.2.70.

    Kotlin versione 1.2.61 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 creazione, 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"

Novità dell'assistente

Un nuovo assistente ti informa degli ultimi cambiamenti in Android Studio.

L'assistente si apre all'avvio di Android Studio dopo una nuova installazione o un aggiornamento se rileva che sono presenti nuove informazioni da mostrare. Puoi anche aprire l'assistente selezionando Guida > Novità di Android Studio.

Jetpack Android

Android Jetpack aiuta ad accelerare lo sviluppo di Android con componenti, strumenti e indicazioni che eliminano le attività ripetitive e consentono di creare più rapidamente e facilmente app testabili di alta qualità. Android Studio include i seguenti aggiornamenti per supportare Jetpack. Per maggiori informazioni, 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 creare la 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 a Abilita 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, eseguiremo la migrazione delle librerie di assistenza 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 grazie a una nuova funzionalità di migrazione.

Per eseguire la migrazione di un progetto esistente ad AndroidX, scegli Refactoring > Esegui migrazione ad AndroidX. Se hai dipendenze Maven di cui non è stata eseguita la migrazione allo spazio dei nomi AndroidX, anche il sistema di build Android Studio converte automaticamente queste dipendenze del progetto.

Il plug-in Android 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 usare AndroidX d'ora in poi. Se il flag non è presente, Android Studio si comporta come se il flag fosse impostato su false.
  • android.enableJetifier: se impostato su true, questo flag indica che vuoi consentire al supporto degli strumenti (dal plug-in Android Gradle) per convertire automaticamente le librerie di terze parti esistenti come se fossero scritte per AndroidX. Se il flag non è presente, Android Studio si comporta come se il flag fosse impostato su false.

Quando utilizzi il comando Migrate to AndroidX, entrambi i flag sono impostati su true.

Se vuoi iniziare a utilizzare immediatamente le librerie AndroidX e non devi convertire le 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 compilato e tutte le risorse dell'app, ma impedisce la generazione di APK e la firma sul Google Play Store.

Il nuovo modello di pubblicazione di 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 necessarie per eseguire la tua app. Non hai più bisogno di creare, firmare e gestire più APK e gli utenti ricevono download più piccoli e ottimizzati.

Inoltre, puoi aggiungere moduli delle funzionalità al progetto dell'app e includerli nel tuo app bundle. Gli utenti possono quindi scaricare e installare le funzionalità della tua app on demand.

Per creare un bundle, scegli Crea > Build > Build bundle/APK > Build bundle.

Per ulteriori informazioni, incluse le istruzioni per la creazione e l'analisi di un Android App Bundle, consulta la pagina Android App Bundle.

Dati di esempio nell'Editor di layout

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

Per provare a utilizzare i dati di esempio, aggiungi un elemento RecyclerView a un nuovo layout, fai clic sul pulsante degli attributi data/ora di progettazione sotto la visualizzazione e scegli una selezione dal carosello di modelli di dati di esempio.

Sezioni

Le sezioni offrono un nuovo modo per incorporare parti delle funzionalità della tua app in altre piattaforme dell'interfaccia utente su Android. Ad esempio, la funzionalità Sezioni consente di mostrare la funzionalità e i contenuti dell'app nei suggerimenti della Ricerca Google.

Android Studio 3.2 dispone di un modello integrato che consente di estendere l'app con le nuove API Slice Provider, nonché con nuovi controlli lint per garantire il rispetto delle best practice durante la creazione delle sezioni.

Per iniziare, fai clic con il tasto destro del mouse sulla cartella di un progetto e scegli Nuovo > Altro > Provider sezione.

Per scoprire di più, ad esempio su come testare le interazioni di Slice, leggi la guida introduttiva alle sezioni.

Kotlin 1.2.61

Android Studio 3.2 integra Kotlin 1.2.61, mentre il nuovo SDK Android si integra meglio con Kotlin. Per ulteriori informazioni, consulta il Blog per sviluppatori Android.

IntelliJ IDEA 2018.1.6

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

Profiler Android

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

Sessioni

Ora puoi salvare i dati di Profiler come sessioni da rivedere e ispezionare in un secondo momento. Profiler conserva i dati delle sessioni 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 rispetto alla sessione corrente. Puoi passare facilmente da una registrazione all'altra per confrontare i dati.

Traccia di sistema

In CPU Profiler, seleziona la nuova configurazione System Trace per ispezionare l'attività di CPU e thread di sistema del tuo dispositivo. Questa configurazione di traccia è basata su systrace ed è utile per esaminare i problemi a livello di sistema, come il jank dell'interfaccia utente.

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

Ispeziona 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 controllare le allocazioni della memoria per il codice JNI dell'app utilizzando Memory Profiler.

Mentre l'app è in esecuzione, seleziona una parte della sequenza temporale che vuoi ispezionare e seleziona heap JNI dal menu a discesa sopra l'elenco dei corsi, come mostrato di seguito. Puoi quindi ispezionare gli oggetti nell'heap come faresti normalmente e fare doppio clic sugli oggetti nella scheda Allocation Call Stack per vedere dove vengono allocati e rilasciati i riferimenti JNI nel codice.

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

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

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

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

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 ti interessa, seleziona la casella accanto a Inizia 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 > Profilo.

Esporta tracce CPU

Dopo aver registrato l'attività della CPU con il Profiler CPU, puoi esportare i dati come file .trace da condividere con altri o ispezionarli 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. Vai alla posizione in cui vuoi salvare il file e fai clic su Salva.

Importa e controlla i file di traccia della CPU

Ora puoi importare e ispezionare i file .trace creati con l'API di debug o con il CPU Profiler. Al momento non puoi importare registrazioni di System Trace.

Importa il file di traccia facendo clic su Avvia nuova sessione del profiler nel riquadro Sessioni del profiler, quindi seleziona Carica da file. Puoi quindi esaminarne i dati nel Profiler della CPU come faresti normalmente, con le seguenti eccezioni:

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

Registra l'attività della CPU utilizzando l'API di debug

Ora puoi avviare e interrompere la registrazione dell'attività della CPU nel Profiler CPU instrumentando la tua app con l'API di 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 interrompe la registrazione quando la tua app chiama stopMethodTracing(). Durante la registrazione dell'attività della CPU attivata utilizzando questa API, Profiler CPU mostra l'API di debug come configurazione della registrazione della CPU selezionata.

Profiler di energia

Energy Profiler mostra una visualizzazione del consumo energetico stimato della tua app, nonché degli eventi di sistema che influiscono sul consumo energetico, come wakelock, sveglie e job.

Quando esegui l'app su un dispositivo connesso o su un emulatore Android con Android 8.0 (API 26) o versioni successive, il Profiler energia viene visualizzato come nuova riga nella parte inferiore della finestra Profiler.

Fai clic sulla riga Energia per massimizzare la visualizzazione del profilo dell'energia. Posiziona il puntatore del mouse su una barra della sequenza temporale per visualizzare un'analisi del consumo energetico per CPU, rete e risorse di geolocalizzazione (GPS), nonché i relativi eventi di sistema.

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

Per visualizzare lo stack di chiamate e altri dettagli per un evento di sistema, ad esempio un wakelock, selezionalo nel riquadro degli eventi. Per accedere 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 tramite lint.

I nuovi controlli lint consentono di trovare e identificare i problemi comuni relativi al codice, che vanno dagli avvisi su potenziali problemi di usabilità a errori ad alta priorità relativi a potenziali vulnerabilità di sicurezza.

Controlli lint per l'interoperabilità Java/Kotlin

Per assicurarti che il codice Java interopera correttamente 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 null, l'utilizzo di parole chiave hard Kotlin e l'inserimento 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 > Ispezioni > Android > Lint > Interoperabilità > Interoperabilità Kotlin e seleziona le regole che vuoi attivare.

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

        android {
            lintOptions {
                check 'Interoperability'
            }
        }
        
      

Lint controlla la presenza di sezioni

Il nuovo lint controlla le sezioni per verificare che tu stia creando sezioni correttamente. Ad esempio, i controlli lint ti avvisano se non hai assegnato un'azione principale a una sezione.

Nuovo target Gradle

Utilizza la nuova attività Gradle lintFix per applicare tutte le correzioni di sicurezza suggerite dal controllo lint direttamente al codice sorgente. Un esempio di controllo lint che suggerisce una correzione sicura da applicare è SyntheticAccessor.

Aggiornamenti dei metadati

Vari metadati, come il controllo della trasmissione del servizio, sono stati aggiornati affinché i controlli lint funzionino con Android 9 (livello API 28).

Avviso se viene eseguito lint su una nuova variante

Lint ora registra la variante e la versione con cui viene registrata una base di riferimento e lint ti avvisa se viene eseguita 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 traduzione può trovare le traduzioni mancanti all'istante, nell'editor.

ID problema più rilevabili

Ora gli ID problema vengono mostrati in più posizioni, anche nella finestra Risultati dell'ispezione. In questo modo potrai trovare più facilmente le informazioni che ti servono per abilitare o disabilitare controlli specifici tramite lintOptions in build.gradle.

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

Associazione dati V2

Data Binding V2 è ora abilitata per impostazione predefinita ed è compatibile con la V1. Ciò significa che, se disponi di dipendenze di libreria compilate con la versione V1, puoi utilizzarle con i progetti che utilizzano l'associazione dati V2. Tuttavia, tieni presente che i progetti che utilizzano la versione V1 non possono utilizzare dipendenze compilate con V2.

Rimozione dello zucchero D8

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

Nuovo strumento di riduzione del 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 tuo progetto:

      android.enableR8 = true
    

ABI predefinite modificate per più APK

Quando crei più APK che hanno come target una diversa ABI, 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 usare NDK r16b o precedente 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 progetto, Android Studio include ora funzionalità di editor migliorate che consentono di modificare gli script di build CMake, come il seguente:

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

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

Se includi già codice e librerie C/C++ nel tuo progetto, apri la finestra Progetto sul lato sinistro dell'IDE selezionando Visualizza > Finestre degli strumenti > Progetto 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 dipendenza della libreria C/C++ locale, come mostrato di seguito.

Multidex nativo abilitato 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 abilita il multidex nativo per tutti i moduli che impostano minSdkVersion=21 o versioni successive.

AAPT2 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 che sia presente 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 corregge molti problemi, tra cui una migliore gestione dei caratteri non ASCII su Windows.

Rimozione della configurazione on demand

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

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

Assistente connessioni ADB

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

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

L'Assistente connessioni ADB fornisce istruzioni, controlli contestuali e un elenco dei dispositivi connessi in una serie di pagine del riquadro Assistente.

Miglioramenti all'emulatore

Ora puoi salvare e caricare snapshot di una AVD (dispositivo virtuale Android) in qualsiasi momento nell'emulatore Android, in modo da ripristinare in modo facile e veloce un dispositivo emulato a uno stato noto per i test. Quando modifichi una Durata di visualizzazione media utilizzando Gestione AVD, puoi specificare l'istantanea della durata di visualizzazione media da caricare all'avvio.

I controlli per il salvataggio, il caricamento e la gestione degli snapshot AVD sono ora disponibili nella scheda Snapshot della finestra Controlli estesi dell'emulatore.

Per maggiori dettagli, vedi Istantanee.

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