Android Studio 3.1 (marzo 2018)

Android Studio 3.1.0 è una release principale che include una serie di nuove funzionalità e miglioramenti.

3.1.4 (agosto 2018)

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

  • Il Kotlin in bundle è ora la versione 1.2.50.
  • I nuovi progetti vengono creati con kotlin-stdlib-jdk* artifacts anziché con gli artefatti kotlin-stdlib-jre*, che sono deprecati.
  • L'analisi R8 delle regole ProGuard è stata migliorata.
  • Sono stati risolti i seguenti bug:
    • Tentativo di eseguire la classe Kotlin Main non riuscito a causa di un errore: "Error: Could not find or load main class..."
    • R8 è entrato in un ciclo infinito durante l'esecuzione di determinate ottimizzazioni.
    • A volte, il comando Ripeti test non riusciti nella finestra Esegui restituiva erroneamente il messaggio "Nessun test trovato".
    • D8 non ha gestito correttamente le istanze invoke-virtual, causando un arresto anomalo con VerifyError: invoke-super/virtual can't be used on private method
    • Il compilatore di associazione dati dipendeva da una versione precedente di com.android.tools:annotations. Il compilatore ora utilizza annotazioni relative agli strumenti del progetto di base, se disponibili.
    • Android Studio ha subito un arresto anomalo durante le transizioni dei frammenti quando si utilizzano i profiler.
    • Si è verificato un arresto anomalo del debugger durante il debug di un layout con una casella di testo.
    • D8 non è riuscito a leggere alcuni file ZIP con caratteri speciali.

3.1.3 (giugno 2018)

Questo aggiornamento di Android Studio 3.1 include correzioni per i seguenti bug:

  • A causa delle perdite di memoria, Android Studio rallentava e non rispondeva dopo che avevi iniziato a utilizzare l'editor di layout. Questo aggiornamento include correzioni per la maggior parte di questi problemi. Prevediamo di rilasciare a breve un altro aggiornamento per risolvere ulteriori perdite di memoria.
  • Alcune applicazioni create con D8 hanno registrato un arresto anomalo su alcuni tablet Verizon Ellipsis.
  • L'installazione delle applicazioni create con D8 non è riuscita con un errore INSTALL_FAILED_DEXOPT sui dispositivi con Android 5.0 o 5.1 (livello API 21 o 22).
  • Alcune applicazioni che utilizzavano la libreria OkHttp e erano state create con D8 si arrestavano in modo anomalo sui dispositivi con Android 4.4 (livello API 19).
  • A volte non è stato possibile avviare Android Studio, con un valore ProcessCanceledException durante l'inizializzazione della classe per com.intellij.psi.jsp.JspElementType.

3.1.2 (aprile 2018)

Questo aggiornamento di Android Studio 3.1 include correzioni per i seguenti bug:

  • In alcuni casi, Android Studio si è bloccato a tempo indeterminato durante l'uscita.
  • Le build configurate con set di origine non sono riuscite con il seguente messaggio quando è stata abilitata l'esecuzione istantanea:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Quando l'esecuzione istantanea è abilitata, le build di nuovi progetti Kotlin non sono riuscite quando vengono attivate dal comando Esegui.
  • Durante la modifica del file build.gradle, a volte si verificava un notevole ritardo tra la digitazione di un carattere e la sua visualizzazione sullo schermo.
  • Gli errori di build si sono verificati durante il processo di dexing in alcuni progetti con un numero elevato di moduli o dipendenze esterne, con il seguente messaggio di errore:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • Il calcolo dell'elenco DEX principale D8 non prendeva in considerazione alcune chiamate riflettenti.

Questo aggiornamento include anche modifiche che rendono molto più veloce l'esecuzione dei controlli di lint da Gradle in alcuni scenari.

3.1.1 (aprile 2018)

Questo aggiornamento di Android Studio 3.1 include correzioni per i seguenti bug:

  • In alcuni casi, quando un progetto creato in Android Studio 3.0 è stato aperto per la prima volta in Android Studio 3.1, l'attività Crea compatibile con Gradle è stata rimossa dall'area Prima del lancio in Esegui/configurazioni debug. Il risultato è stato che i progetti non sono stati creati quando è stato fatto clic sul pulsante Esegui o Debug, il che causava errori come il deployment di APK errati e arresti anomali durante l'utilizzo dell'esecuzione istantanea.

    Per risolvere questo problema, Android Studio 3.1.1 aggiunge l'attività Crea con riconoscimento per Gradle alla configurazione di esecuzione per i progetti in cui manca questa voce. Questa modifica si verifica dopo la prima sincronizzazione di Gradle, quando il progetto viene caricato.

  • Si è verificato un arresto anomalo del debugger durante il debug di un layout con una casella di testo se era attivata la profilazione avanzata.
  • Android Studio si è bloccato dopo aver fatto clic su Crea varianti.
  • I file AAR (archivio Android) sono stati estratti due volte, una durante il processo di sincronizzazione di Gradle e l'altra durante il processo di compilazione di Gradle.
  • Mancano elementi in alcuni disegni di disegno vettoriali importati dai file SVG.
  • L'avviso relativo al ritiro della configurazione delle dipendenze compile è stato aggiornato con indicazioni migliori relative alle configurazioni implementation e api. Per dettagli sulla migrazione dall'utilizzo della configurazione compile, consulta la documentazione relativa alle nuove configurazioni delle dipendenze.

Programmazione/IDE

IntelliJ 2017.3.3

L'IDE principale di Android Studio è stato aggiornato con i miglioramenti apportati da IntelliJ IDEA durante la release 2017.3.3. I miglioramenti includono una migliore analisi del flusso di controllo per raccolte e stringhe, una migliore inferenza nulla, nuove correzioni rapide e molto altro.

Per maggiori dettagli, consulta le note di rilascio di JetBrains per le versioni di IntelliJ IDEA 2017.2 e 2017.3, nonché le note di rilascio di JetBrains per gli aggiornamenti relativi alla correzione di bug.

Miglioramenti alla modifica SQL con la stanza virtuale

Quando utilizzi la libreria dei database delle stanze, puoi sfruttare diversi miglioramenti alla modifica SQL:

  • Il completamento del codice all'interno di un elemento Query comprende tabelle (entità), colonne, parametri di query, alias, join, sottoquery e clausole WITH SQL.
  • L'evidenziazione della sintassi SQL ora funziona.
  • Puoi fare clic con il tasto destro del mouse sul nome di una tabella in SQL e rinominarla, riscrivendo anche il codice Java o Kotlin corrispondente (incluso, ad esempio, il tipo restituito della query). La ridenominazione funziona anche nell'altra direzione, quindi la ridenominazione di una classe o di un campo Java riscrive il codice SQL corrispondente.
  • Gli utilizzi di SQL vengono mostrati quando utilizzi Trova utilizzi (fai clic con il tasto destro del mouse e scegli Trova utilizzi dal menu contestuale).
  • Per accedere alla dichiarazione di un'entità SQL nel codice Java o Kotlin, puoi tenere premuto Ctrl (Comando su Mac) mentre fai clic sull'entità.

Per informazioni sull'utilizzo di SQL con Room, consulta Salvare i dati in un database locale utilizzando Room.

Aggiornamenti all'associazione di dati

Questo aggiornamento include diversi miglioramenti per l'associazione di dati:

  • Ora puoi utilizzare un oggetto LiveData come campo osservabile nelle espressioni di associazione di dati. La classe ViewDataBinding ora include un nuovo metodo setLifecycle() che puoi utilizzare per osservare gli oggetti LiveData.

  • La classe ObservableField ora può accettare altri oggetti Observable nel suo costruttore.

  • Puoi visualizzare l'anteprima di un nuovo compilatore incrementale per le classi di associazione di dati. Per i dettagli di questo nuovo compilatore e le istruzioni per abilitarlo, consulta Data Binding Compiler V2.

    I vantaggi del nuovo compilatore includono i seguenti:

    • Le classi ViewBinding vengono generate dal plug-in Android per Gradle prima del compilatore Java.
    • Le librerie mantengono le classi di associazione generate quando l'app viene compilata, anziché rigenerare ogni volta. Ciò può migliorare notevolmente le prestazioni per i progetti multimodulo.

Compilatore e Gradle

D8 è il compilatore DEX predefinito

Il compilatore D8 viene ora utilizzato per impostazione predefinita per generare il bytecode DEX.

Questo nuovo compilatore DEX offre diversi vantaggi, tra cui i seguenti:

  • Dexing più veloce
  • Riduzione della memoria utilizzata
  • Generazione del codice migliorata (allocazione dei registri migliore, tabelle di stringhe più intelligenti)
  • Migliore esperienza di debug durante la visualizzazione del codice

Non è necessario apportare modifiche al codice o al flusso di lavoro di sviluppo per ottenere questi vantaggi, a meno che tu non abbia precedentemente disabilitato il compilatore D8.

Se imposti android.enableD8 su false in gradle.properties, elimina il flag o impostalo su true:

        android.enableD8=true
      

Per maggiori dettagli, consulta la sezione Nuovo compilatore DEX.

Desugaring incrementale

Per i progetti che utilizzano le funzionalità di linguaggio Java 8, il desugaring incrementale è abilitato per impostazione predefinita, il che può migliorare i tempi di build.

La desugaring converte lo zucchero sintattico in un modulo che il compilatore può elaborare in modo più efficiente.

Puoi disabilitare la desugaring incrementale specificando quanto segue nel file gradle.properties del tuo progetto:

        android.enableIncrementalDesugaring=false
      

Finestra di output semplificata

La console di Gradle è stata sostituita dalla finestra Crea, che contiene le schede Sincronizzazione e Crea.

Per maggiori dettagli su come utilizzare la nuova finestra semplificata Crea, consulta Monitorare il processo di compilazione.

Aggiornamenti batch e contemporaneità dell'indicizzazione

I processi di sincronizzazione Gradle e IDE sono ora molto più efficienti, riducendo il tempo sprecato per molte operazioni di indicizzazione ridondanti.

C++ e LLDB

Abbiamo apportato numerosi miglioramenti a livello di qualità e prestazioni nelle fasi di programmazione, sincronizzazione, creazione e debug di C++. I miglioramenti includono quanto segue:

  • Se lavori con progetti C++ di grandi dimensioni, dovresti notare un miglioramento significativo nella riduzione del tempo dedicato alla creazione di simboli. Anche i tempi di sincronizzazione vengono ridotti notevolmente per i progetti di grandi dimensioni.

  • Le prestazioni durante la creazione e la sincronizzazione con CMake sono state migliorate grazie a un riutilizzo più aggressivo dei risultati memorizzati nella cache.

  • L'aggiunta di formatter ("stampanti belle") per più strutture di dati C++ semplifica la lettura dell'output di LLDB.

  • LLDB ora funziona solo con Android 4.1 (livello API 16) e versioni successive.

Nota: il debug nativo con Android Studio 3.0 o versioni successive non funziona su Windows a 32 bit. Se usi Windows a 32 bit e devi eseguire il debug del codice nativo, utilizza Android Studio 2.3.

Kotlin

Kotlin aggiornato alla versione 1.2.30

Android Studio 3.1 include la versione 1.2.30 di Kotlin.

Il codice Kotlin ora è analizzato con il controllo lint della riga di comando

L'esecuzione di lint dalla riga di comando ora analizza le classi Kotlin.

Per ogni progetto su cui vuoi eseguire lint, il repository Maven di Google deve essere incluso nel file build.gradle di primo livello. Il Repository Maven è già incluso per i progetti creati in Android Studio 3.0 e versioni successive.

Strumenti per le prestazioni

Esempio di processi C++ nativi con CPU Profiler

Il Profilo CPU ora include una configurazione predefinita per registrare tracce campionate dei thread nativi della tua app. Puoi utilizzare questa configurazione eseguendo il deployment della tua app su un dispositivo con Android 8.0 (livello API 26) o versioni successive, quindi selezionando Campionata (Nativa) dal menu a discesa delle configurazioni di registrazione di Profiler della CPU. Dopodiché, registra e controlla una traccia come faresti normalmente.

Puoi modificare le impostazioni predefinite, ad esempio l'intervallo di campionamento, creando una configurazione di registrazione.

Per tornare al tracciamento dei thread Java, seleziona una configurazione Sampled (Java) o Instrumented (Java).

Filtra le tracce della CPU, i risultati dell'allocazione della memoria e i dump dell'heap

CPU Profiler e Memory Profiler includono una funzionalità di ricerca che consente di filtrare i risultati dalla registrazione di un'analisi del metodo, dall'allocazione della memoria o dal dump dell'heap.

Per eseguire una ricerca, fai clic su Filtra nell'angolo in alto a destra del riquadro, digita la query e premi Invio.

Suggerimento: puoi aprire il campo di ricerca anche premendo Ctrl + F (Comando + F su Mac).

Nella scheda Filame di Profiler della CPU, gli stack di chiamate che includono metodi correlati alla tua query di ricerca vengono evidenziati e spostati sul lato sinistro del grafico.

Per maggiori informazioni sui filtri per metodo, classe o nome del pacchetto, consulta Registrare e ispezionare le tracce dei metodi.

Scheda Richiesta in Profiler di rete

Il Network Profiler ora include una scheda Richiesta che fornisce dettagli sulle richieste di rete durante la sequenza temporale selezionata. Nelle versioni precedenti, Network Profiler forniva solo informazioni sulle risposte di rete.

Visualizzazione thread in Profiler di rete

Dopo aver selezionato una parte della sequenza temporale in Network Profiler, puoi selezionare una delle seguenti schede per visualizzare ulteriori dettagli sull'attività di rete durante questo periodo di tempo:

  • Visualizzazione connessione: fornisce le stesse informazioni delle versioni precedenti di Android Studio, elenca i file inviati o ricevuti durante la parte selezionata della sequenza temporale in tutti i thread della CPU dell'app. Per ogni richiesta, puoi esaminare la dimensione, il tipo, lo stato e la durata della trasmissione.
  • Visualizzazione thread: mostra l'attività di rete di ciascun thread della CPU dell'app. Questa visualizzazione consente di ispezionare i thread dell'app responsabili di ogni richiesta di rete.

Controllo layout

Layout Inspector ha acquisito nuove funzionalità, tra cui alcune funzionalità precedentemente fornite dagli strumenti deprecati di visualizzazione della gerarchia e Pixel Perfect:

  • Pulsanti di zoom e scorciatoie da tastiera per navigare e ispezionare i layout
  • Overlay griglia di riferimento
  • Possibilità di caricare un'immagine di riferimento e di utilizzarla come overlay (utile per confrontare il layout con un modello dell'interfaccia utente)
  • Esegui il rendering dell'anteprima del sottoalbero per isolare una visualizzazione in un layout complesso

Editor layout

La tavolozza nell'editor di layout ha ricevuto molti miglioramenti:

  • Riorganizzazione delle categorie per visualizzazioni e layout.
  • Nuova categoria Comune per viste e layout, a cui puoi aggiungere un comando Preferito.
  • Ricerca di viste e layout migliorata.
  • Nuovi comandi per la documentazione di apertura per una vista o un elemento di layout specifico.

Puoi utilizzare il nuovo comando Converti vista nell'albero dei componenti o nell'editor di progettazione per convertire una vista o un layout in un altro tipo di vista o layout.

Ora puoi creare facilmente vincoli per gli elementi vicino alla vista selezionata utilizzando i nuovi pulsanti Crea una connessione nello strumento di controllo delle viste nella parte superiore della finestra Attributi.

Esecuzione ed esecuzione istantanea

Il comportamento dell'opzione Utilizza la stessa selezione per i lanci futuri nella finestra di dialogo Seleziona la destinazione del deployment è stato reso più coerente. Se l'opzione Utilizza stessa selezione è abilitata, la finestra di dialogo Seleziona target di deployment si apre solo la prima volta che utilizzi il comando Esegui fino a quando il dispositivo selezionato non è più connesso.

Quando scegli come target un dispositivo con Android 8.0 (livello API 26) o versioni successive, Esecuzione istantanea può eseguire il deployment delle modifiche alle risorse senza causare il riavvio dell'applicazione. Questo è possibile perché le risorse sono contenute in un APK diviso.

Emulatore

Per informazioni dettagliate sulle novità e sulle modifiche apportate nell'emulatore rispetto ad Android Studio 3.0, consulta le note di rilascio dell'emulatore Android dalla versione 27.0.2 alla versione 27.1.12.

I principali miglioramenti includono:

  • Snapshot di Avvio rapido per salvare lo stato dell'emulatore e avviare più rapidamente, grazie alla possibilità di utilizzare il comando Save now (Salva ora) per salvare uno stato di avvio personalizzato.
  • Schermata emulatore senza finestre.
  • Immagini di sistema per Android 8.0 (livello API 26), Android 8.1 (livello API 27) e Anteprima per gli sviluppatori di Android P.

Miglioramenti dell'interfaccia utente e dell'esperienza utente

Altre descrizioni comando, scorciatoie da tastiera e messaggi utili

Abbiamo aggiunto descrizioni comando e utili overlay di messaggi in molte posizioni all'interno di Android Studio.

Per visualizzare le scorciatoie da tastiera per molti comandi, è sufficiente tenere premuto il puntatore del mouse su un pulsante fino alla visualizzazione della descrizione comando.

Menu Strumenti > Android rimosso

Il menu Strumenti > Android è stato rimosso. I comandi che prima erano inclusi in questo menu sono stati spostati.

  • Molti comandi sono stati spostati direttamente nel menu Strumenti.
  • Il comando Sincronizza progetto con file gradle è stato spostato nel menu File.
  • Il comando Device Monitor è stato rimosso, come descritto di seguito.

Device Monitor disponibile dalla riga di comando

In Android Studio 3.1, Monitoraggio dispositivi ha un ruolo minore rispetto a prima. In molti casi, la funzionalità disponibile tramite il Monitoraggio dispositivi è ora fornita da strumenti nuovi e migliorati.

Consulta la documentazione di Device Monitor per le istruzioni su come richiamare Device Monitor dalla riga di comando e per i dettagli sugli strumenti disponibili tramite Device Monitor.