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:

  • La versione di Kotlin inclusa è ora la 1.2.50.
  • I nuovi progetti vengono creati con kotlin-stdlib-jdk* artifacts, anziché con gli artefatti kotlin-stdlib-jre*, che sono ritirati.
  • L'analisi delle regole di ProGuard di R8 è stata migliorata.
  • Sono stati corretti i seguenti bug:
    • Il tentativo di eseguire la classe principale Kotlin non è riuscito con un errore: "Error: Could not find or load main class..."
    • R8 è entrato in un ciclo infinito durante l'esecuzione di determinate ottimizzazioni.
    • L'utilizzo del comando Esegui di nuovo i test non riusciti nella finestra Esegui a volte restituiva erroneamente il messaggio "Nessun test trovato".
    • D8 non ha gestito correttamente le istanze invoke-virtual, causando un arresto anomalo con un VerifyError: invoke-super/virtual can't be used on private method
    • Il compilatore Data Binding dipendeva da una vecchia versione di com.android.tools:annotations. Il compilatore ora utilizza le annotazioni degli strumenti del progetto di base, se disponibili.
    • Android Studio ha subito un arresto anomalo durante le transizioni dei fragment quando si utilizzavano i profiler.
    • Il debugger si è arrestato in modo anomalo 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:

  • Perdite di memoria che hanno causato il rallentamento e la mancata risposta di Android Studio dopo l'utilizzo dell'editor layout. Questo aggiornamento include correzioni per la maggior parte di questi problemi. Prevediamo di rilasciare presto un altro aggiornamento per risolvere ulteriori perdite di memoria.
  • Alcune applicazioni create con D8 hanno subito un arresto anomalo su alcuni tablet Verizon Ellipsis.
  • L'installazione di applicazioni create con D8 non è riuscita con un errore INSTALL_FAILED_DEXOPT su dispositivi con Android 5.0 o 5.1 (livello API 21 o 22).
  • Alcune applicazioni che utilizzavano la libreria OkHttp e sono state create con D8 hanno subito arresti anomali sui dispositivi con Android 4.4 (livello API 19).
  • A volte Android Studio non riusciva ad avviarsi, con un 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 bloccava a tempo indeterminato durante l'uscita.
  • Le build configurate con set di origini non sono riuscite con il seguente messaggio quando è stato attivato Instant Run:

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

  • Quando Instant Run era abilitato, le build dei nuovi progetti Kotlin non andavano a buon fine quando venivano attivate dal comando Esegui.
  • Durante la modifica del file build.gradle, a volte si verificava un ritardo notevole tra la digitazione di un carattere e la sua visualizzazione sullo schermo.
  • Si sono verificati errori di compilazione durante la fase 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 di D8 non teneva conto di alcune invocazioni di reflection.

Questo aggiornamento include anche modifiche che rendono l'esecuzione dei controlli lint da Gradle molto più veloce 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à di compilazione Gradle-aware è stata rimossa dall'area Prima del lancio in Configurazioni di esecuzione/debug. Il risultato è stato che i progetti non sono stati compilati quando è stato fatto clic sul pulsante Esegui o Debug, il che a sua volta ha causato errori come il deployment di APK errati e arresti anomali durante l'utilizzo di Instant Run.

    Per risolvere questo problema, Android Studio 3.1.1 aggiunge l'attività Gradle-aware Make alla configurazione di esecuzione per i progetti in cui manca questa voce. Questa modifica si verifica dopo la prima sincronizzazione di Gradle al caricamento del progetto.

  • Il debugger si arrestava in modo anomalo durante il debug di un layout con una casella di testo se era attivato il profiling avanzato.
  • Android Studio si è bloccato dopo che hai fatto clic su Varianti di build.
  • I file AAR (Android Archive) sono stati estratti due volte, una durante il processo di sincronizzazione di Gradle e una durante il processo di compilazione di Gradle.
  • Alcuni elementi mancavano da alcune risorse grafiche vettoriali importate da file SVG.
  • L'avviso relativo al ritiro della configurazione della dipendenza compile è stato aggiornato con indicazioni migliori in merito alle configurazioni implementation e api. Per i dettagli della migrazione dall'utilizzo della configurazione compile, consulta la documentazione per le nuove configurazioni delle dipendenze.

Programmazione/IDE

IntelliJ 2017.3.3

L'IDE Android Studio principale è stato aggiornato con i miglioramenti di IntelliJ IDEA fino alla release 2017.3.3. I miglioramenti includono un'analisi migliore del flusso di controllo per raccolte e stringhe, un'inferenza di nullabilità migliorata, nuove correzioni rapide e molto altro ancora.

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 di correzione dei bug.

Miglioramenti alla modifica SQL con Room

Quando utilizzi la libreria del database Room, puoi sfruttare diversi miglioramenti alla modifica SQL:

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

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

Aggiornamenti all'associazione dei 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 utilizzi 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 attivarlo, vedi Compilatore del data binding V2.

    I vantaggi del nuovo compilatore includono:

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

Compilatore e Gradle

D8 è il compilatore DEX predefinito

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

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

  • Dexing più rapido
  • Minore memoria utilizzata
  • Generazione di codice migliorata (migliore allocazione dei registri, tabelle di stringhe più intelligenti)
  • Migliore esperienza di debug durante l'esecuzione passo passo del codice

Non devi apportare modifiche al codice o al flusso di lavoro di sviluppo per usufruire di questi vantaggi, a meno che tu non abbia disattivato manualmente il compilatore D8 in precedenza.

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

        android.enableD8=true
      

Per maggiori dettagli, vedi Nuovo compilatore DEX.

Rimozione incrementale

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

La rimozione dello zucchero sintattico converte zucchero sintattico in una forma che il compilatore può elaborare in modo più efficiente.

Puoi disattivare la rimozione incrementale dello zucchero sintattico specificando quanto segue nel file gradle.properties del progetto:

        android.enableIncrementalDesugaring=false
      

Finestra di output semplificata

La console Gradle è stata sostituita dalla finestra Build, che include le schede Sync e Build.

Per informazioni dettagliate su come utilizzare la nuova finestra Build semplificata, consultaMonitorare la procedura di build.

Aggiornamenti batch e indicizzazione concorrente

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

C++ e LLDB

Abbiamo apportato molti miglioramenti alla qualità e alle prestazioni nelle fasi di codifica, sincronizzazione, compilazione e debug dello sviluppo in 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 dei simboli. Anche il tempo di sincronizzazione è notevolmente ridotto 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 formattatori ("pretty printer") per altre strutture di dati C++ rende più facile 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 utilizzi Windows a 32 bit e devi eseguire il debug del codice nativo, utilizza Android Studio 2.3.

Kotlin

Kotlin è stato eseguito l'upgrade alla versione 1.2.30

Android Studio 3.1 include Kotlin versione 1.2.30.

Il codice Kotlin viene ora analizzato con il controllo lint da 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 nei progetti creati in Android Studio 3.0 e versioni successive.

Strumenti per il rendimento

Esempio di processi C++ nativi con CPU Profiler

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

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

Per tornare a tracciare i thread Java, seleziona una configurazione Campionata (Java) o Strumentata (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 ti consente di filtrare i risultati dalla registrazione di una traccia di metodo, allocazioni di memoria o 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 anche aprire il campo di ricerca premendo Ctrl + F (Comando + F su Mac).

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

Per ulteriori informazioni sul filtraggio in base a metodo, classe o nome del pacchetto, vedi Registrare e analizzare le tracce dei metodi.

Scheda Richiesta nel Network Profiler

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

Visualizzazione thread in Network Profiler

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

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

Layout Inspector

L'Layout Inspector ha acquisito nuove funzionalità, tra cui alcune funzionalità precedentemente fornite dagli strumenti visualizzatore gerarchia e Pixel Perfect deprecati:

  • Pulsanti di zoom e scorciatoie da tastiera per navigare e ispezionare i layout
  • Overlay della griglia di riferimento
  • Possibilità di caricare un'immagine di riferimento e utilizzarla come overlay (utile per confrontare il layout con un mockup della UI)
  • Visualizza l'anteprima dell'albero secondario per isolare una visualizzazione in un layout complesso

Layout Editor

La tavolozza nel Layout Editor ha ricevuto molti miglioramenti:

  • Riorganizzazione delle categorie per visualizzazioni e layout.
  • Nuova categoria Comune per visualizzazioni e layout, che puoi aggiungere con un comando Preferiti.
  • Ricerca migliorata di visualizzazioni e layout.
  • Nuovi comandi per aprire la documentazione per una visualizzazione o un elemento di layout specifico.

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

Ora puoi creare facilmente vincoli per gli elementi vicini alla visualizzazione selezionata utilizzando i nuovi pulsanti Crea una connessione nella finestra di ispezione della visualizzazione nella parte superiore della finestra Attributi.

Esegui ed Esecuzione rapida

Il comportamento dell'opzione Usa la stessa selezione per i lanci futuri nella finestra di dialogo Seleziona target di distribuzione è stato reso più coerente. Se l'opzione Usa stessa selezione è attiva, la finestra di dialogo Seleziona destinazione di distribuzione si apre solo la prima volta che utilizzi il comando Esegui finché il dispositivo selezionato non è più connesso.

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

Emulatore

Per informazioni dettagliate sulle novità e sulle modifiche apportate all'emulatore da 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 il salvataggio dello stato dell'emulatore e l'avvio più rapido, con la possibilità di utilizzare il comando Salva ora per salvare uno stato di avvio personalizzato.
  • Schermata dell'emulatore senza finestra.
  • Immagini di sistema per Android 8.0 (livello API 26), Android 8.1 (livello API 27) e Android P Anteprima per gli sviluppatori.

Miglioramenti dell'interfaccia utente e dell'esperienza utente

Altre descrizioni comando, scorciatoie da tastiera e messaggi utili

Abbiamo aggiunto descrizioni comando e overlay di messaggi utili in molti punti di Android Studio.

Per visualizzare le scorciatoie da tastiera per molti comandi, tieni il puntatore del mouse sopra un pulsante finché non viene visualizzata la descrizione comando.

Strumenti > Menu Android rimosso

Il menu Strumenti > Android è stato rimosso. I comandi che in precedenza si trovavano in questo menu sono stati spostati.

  • Molti comandi sono stati spostati direttamente sotto il 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, il Device Monitor svolge un ruolo meno importante rispetto a prima. In molti casi, la funzionalità disponibile tramite Device Monitor è ora fornita da strumenti nuovi e migliorati.

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