Release precedenti

Di seguito sono riportate le note di rilascio di Android Studio 3.6 e versioni precedenti e del plug-in Android per Gradle 3.6.0 e versioni precedenti.

Versioni precedenti di Android Studio

3.6 (febbraio 2020)

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

Vorremmo anche ringraziare tutti i nostri contributori della community che hanno collaborato a questa release.

3.6.3 (aprile 2020)

Questo aggiornamento minore include varie correzioni di bug. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

3.6.2 (marzo 2020)

Questo aggiornamento minore include varie correzioni di bug. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

3.6.1 (febbraio 2020)

Questo aggiornamento minore include varie correzioni di bug. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

Strumenti di progettazione

Questa versione di Android Studio include aggiornamenti a diversi strumenti di progettazione, tra cui l'editor layout e Resource Manager.

Visualizzazione divisa e zoom negli editor di progettazione

La visualizzazione divisa mostra contemporaneamente sia la visualizzazione della struttura che quella del testo

Questa release include i seguenti aggiornamenti degli editor di progettazione visiva:

  • Gli editor di progettazione, come l'editor di layout e l'editor di navigazione, ora offrono una visualizzazione Dividi che ti consente di vedere contemporaneamente le visualizzazioni Progettazione e Codice della tua UI. Nell'angolo in alto a destra della finestra dell'editor, ora sono disponibili tre pulsanti visualizzare le icone per alternare le opzioni di visualizzazione:

    • Per attivare la visualizzazione divisa, fai clic sull'icona Dividi icona della visualizzazione divisa.
    • Per attivare la visualizzazione dell'origine XML, fai clic sull'icona Origine icona della visualizzazione dell'origine.
    • Per attivare la visualizzazione Progettazione, fai clic sull'icona Progettazione icona della visualizzazione struttura.
  • I controlli per lo zoom e lo spostamento all'interno degli editor di progettazione sono stati spostati in un pannello mobile nell'angolo in basso a destra della finestra dell'editor.

Per scoprire di più, vedi Creare una UI con Layout Editor.

Scheda Risorsa Selettore colori

Per aiutarti ad aggiornare rapidamente i valori delle risorse di colore nella tua app quando utilizzi il selettore di colori in XML o gli strumenti di progettazione, l'IDE ora compila i valori delle risorse di colore per te.

Selettore colori con valori di colore precompilati

Resource Manager

Resource Manager contiene i seguenti aggiornamenti:

  • Resource Manager ora supporta la maggior parte dei tipi di risorse.
  • Quando cerchi una risorsa, Resource Manager ora mostra i risultati di tutti i moduli del progetto. In precedenza, le ricerche restituivano risultati solo dal modulo selezionato.
  • Il pulsante del filtro consente di visualizzare le risorse dei moduli dipendenti locali, delle librerie esterne e del framework Android. Puoi anche utilizzare il filtro per mostrare gli attributi del tema.
  • Ora puoi rinominare le risorse durante la procedura di importazione facendo clic all'interno della casella di testo sopra la risorsa.

Per saperne di più, vedi Gestire le risorse dell'interfaccia utente dell'app con Resource Manager.

Aggiornamenti al plug-in Android per Gradle

L'ultima versione del plug-in Android per Gradle include molti aggiornamenti, tra cui ottimizzazioni per la velocità di compilazione, supporto per il plug-in di pubblicazione Maven e supporto per View Binding. Per saperne di più, leggi le note di rilascio complete.

Visualizza associazione

Il data binding ti consente di scrivere più facilmente codice che interagisce con le visualizzazioni generando una classe di binding per ogni file di layout XML. Queste classi contengono riferimenti diretti a tutte le visualizzazioni che hanno un ID nel layout corrispondente.

Poiché sostituisce findViewById(), il binding della visualizzazione elimina il rischio di eccezioni di puntatore nullo derivanti da un ID visualizzazione non valido.

Per attivare il binding delle visualizzazioni, devi utilizzare il plug-in Android per Gradle 3.6.0 o versioni successive e includere quanto segue nel file build.gradle di ogni modulo:

Groovy

  android {
      buildFeatures.viewBinding = true
  }
  

Kotlin

  android {
      buildFeatures.viewBinding = true
  }
  

Applica modifiche

Ora puoi aggiungere una classe e poi implementare la modifica del codice nell'app in esecuzione facendo clic su Applica modifiche al codice o Applica modifiche e riavvia attività .

Per scoprire di più sulla differenza tra queste due azioni, consulta la sezione Applica modifiche.

Riorganizzare l'opzione di menu per attivare il supporto delle app istantanee

Ora puoi attivare istantaneamente il modulo base in qualsiasi momento dopo aver creato il progetto dell'app nel seguente modo:

  1. Apri il riquadro Progetto selezionando Visualizza > Finestre degli strumenti > Progetto dalla barra dei menu.
  2. Fai clic con il tasto destro del mouse sul modulo di base, in genere denominato "app", e seleziona Refactor > Enable Instant Apps Support.
  3. Nella finestra di dialogo visualizzata, seleziona il modulo base dal menu a discesa.
  4. Fai clic su OK.

Nota:l'opzione per attivare immediatamente il modulo dell'app base dalla procedura guidata Crea nuovo progetto è stata rimossa.

Per saperne di più, leggi Panoramica di Google Play Instant.

Deoffuscare il bytecode di classi e metodi in Strumento di analisi APK

Quando utilizzi APK Analyzer per ispezionare i file DEX, puoi deoffuscare il bytecode di classi e metodi nel seguente modo:

  1. Seleziona Build > Analyze APK (Build > Analizza APK) dalla barra dei menu.
  2. Nella finestra di dialogo visualizzata, vai all'APK che vuoi esaminare e selezionalo.
  3. Fai clic su Apri.
  4. In APK Analyzer, seleziona il file DEX che vuoi esaminare.
  5. Nel visualizzatore di file DEX, carica il file di mapping ProGuard per l'APK che stai analizzando.
  6. Fai clic con il tasto destro del mouse sulla classe o sul metodo che vuoi esaminare e seleziona Mostra bytecode.

Strumenti nativi

I seguenti aggiornamenti supportano lo sviluppo nativo (C/C++) in Android Studio.

Supporto di Kotlin

Le seguenti funzionalità dell'NDK in Android Studio, precedentemente supportate in Java, sono ora supportate anche in Kotlin:

  • Passa da una dichiarazione JNI alla funzione di implementazione corrispondente in C/C++. Visualizza questo mapping passando il mouse sopra il marcatore dell'elemento C o C++ vicino al numero di riga nel file di codice sorgente gestito.

  • Crea automaticamente una funzione di implementazione stub per una dichiarazione JNI. Definisci prima la dichiarazione JNI, poi digita "jni" o il nome del metodo nel file C/C++ per attivarlo.

  • Le funzioni di implementazione native inutilizzate vengono evidenziate come avviso nel codice sorgente. Anche le dichiarazioni JNI con implementazioni mancanti vengono evidenziate come errore.

  • Quando rinomini (refattorizzi) una funzione di implementazione nativa, tutte le dichiarazioni JNI corrispondenti vengono aggiornate. Rinomina una dichiarazione JNI per aggiornare la funzione di implementazione nativa.

  • Controllo della firma per le implementazioni JNI con binding implicito.

Altri miglioramenti di JNI

L'editor di codice in Android Studio ora supporta un flusso di lavoro di sviluppo JNI più fluido, tra cui suggerimenti per i tipi, completamento automatico, ispezioni e refactoring del codice migliorati.

Ricaricamento dell'APK per le librerie native {:#3.6-reload-apk}

Non è più necessario creare un nuovo progetto quando l'APK nel progetto viene aggiornato al di fuori dell'IDE. Android Studio rileva le modifiche apportate all'APK e ti offre la possibilità di reimportarlo.

Allegare origini APK solo Kotlin

Ora è possibile collegare origini APK esterne solo Kotlin durante la profilazione e il debug degli APK precompilati. Per saperne di più, consulta Allegare origini Kotlin/Java.

Rilevamento di perdite di memoria in Memory Profiler

Quando analizzi un dump dell'heap in Memory Profiler, ora puoi filtrare i dati di profilazione che Android Studio ritiene possano indicare perdite di memoria per le istanze Activity e Fragment nella tua app.

I tipi di dati mostrati dal filtro includono:

  • Istanze Activity che sono state eliminate ma a cui viene ancora fatto riferimento.
  • Istanze Fragment che non hanno un FragmentManager valido, ma a cui viene comunque fatto riferimento.

Allegare origini APK solo Kotlin

Ora è possibile collegare origini APK esterne solo Kotlin durante la profilazione e il debug degli APK precompilati. Per saperne di più, consulta Allegare origini Kotlin/Java.

Rilevamento di perdite di memoria in Memory Profiler

Quando analizzi un dump dell'heap in Memory Profiler, ora puoi filtrare i dati di profilazione che Android Studio ritiene possano indicare perdite di memoria per le istanze Activity e Fragment nella tua app.

I tipi di dati mostrati dal filtro includono:

  • Istanze Activity che sono state eliminate ma a cui viene ancora fatto riferimento.
  • Istanze Fragment che non hanno un FragmentManager valido, ma a cui viene ancora fatto riferimento.

In determinate situazioni, ad esempio le seguenti, il filtro potrebbe generare falsi positivi:

  • È stato creato un Fragment, ma non è ancora stato utilizzato.
  • Un Fragment viene memorizzato nella cache, ma non come parte di un FragmentTransaction.

Per utilizzare questa funzionalità, devi prima acquisire un dump dell'heap o importare un file di dump dell'heap in Android Studio. Per visualizzare i frammenti e le attività che potrebbero causare perdite di memoria, seleziona la casella di controllo Perdite di attività/frammenti nel riquadro del dump dell'heap di Memory Profiler.

Profiler: rilevamento delle perdite di memoria

Filtrare un dump dell'heap per rilevare perdite di memoria.

Emulatori

Android Studio 3.6 ti aiuta a sfruttare diversi aggiornamenti inclusi in Android Emulator 29.2.7 e versioni successive, come descritto di seguito.

Supporto migliorato della posizione

Android Emulator 29.2.7 e versioni successive forniscono un supporto aggiuntivo per l'emulazione delle coordinate GPS e delle informazioni sul percorso. Quando apri i Controlli estesi degli emulatori, le opzioni nella scheda Posizione sono ora organizzate in due schede: Punti singoli e Percorsi.

Punti singoli

Nella scheda Punti singoli, puoi utilizzare la webview di Google Maps per cercare punti di interesse, proprio come faresti quando utilizzi Google Maps su uno smartphone o un browser. Quando cerchi o fai clic su una posizione nella mappa, puoi salvarla selezionando Salva punto nella parte inferiore della mappa. Tutte le posizioni salvate sono elencate sul lato destro della finestra Controlli estesi.

Per impostare la posizione degli emulatori sulla posizione selezionata sulla mappa, fai clic sul pulsante Imposta posizione in basso a destra della finestra Controlli estesi.

Scheda Singoli punti nei controlli estesi dell'emulatore..

Percorsi

Simile alla scheda Punti singoli, la scheda Percorsi fornisce una webview di Google Maps che puoi utilizzare per creare un percorso tra due o più località. Per creare e salvare un percorso:

  1. Nella visualizzazione della mappa, utilizza il campo di testo per cercare la prima destinazione del tuo percorso.
  2. Seleziona la posizione dai risultati di ricerca.
  3. Seleziona il pulsante Naviga.
  4. Seleziona il punto di partenza del percorso dalla mappa.
  5. (Facoltativo) Fai clic su Aggiungi destinazione per aggiungere altre tappe al percorso.
  6. Salva il percorso facendo clic su Salva percorso nella visualizzazione della mappa.
  7. Specifica un nome per l'itinerario e fai clic su Salva.

Per simulare l'emulatore che segue il percorso che hai salvato, seleziona il percorso dall'elenco dei Percorsi salvati e fai clic su Riproduci percorso in basso a destra della finestra Controlli estesi. Per interrompere la simulazione, fai clic su Interrompi percorso.

Scheda Percorsi nei controlli avanzati dell'emulatore..

Per simulare continuamente l'emulatore seguendo il percorso specificato, attiva l'opzione accanto a Ripeti riproduzione. Per modificare la velocità con cui l'emulatore segue il percorso specificato, seleziona un'opzione dal menu a discesa Velocità di riproduzione.

Supporto di più display

L'emulatore Android ora ti consente di eseguire il deployment della tua app su più display, che supportano dimensioni personalizzabili e possono aiutarti a testare app che supportano multi-window e multi-display. Mentre un dispositivo virtuale è in esecuzione, puoi aggiungere fino a due display aggiuntivi nel seguente modo:

  1. Apri i Controlli estesi e vai alla scheda Display.

  2. Aggiungi un altro display facendo clic su Aggiungi display secondario.

  3. Dal menu a discesa nella sezione Display secondari, esegui una delle seguenti operazioni:

  4. Seleziona una delle proporzioni preimpostate

  5. Seleziona Personalizzata e imposta altezza, larghezza e dpi per il tuo display personalizzato.

  6. (Facoltativo) Fai clic su Aggiungi display secondario per aggiungere un terzo display.

  7. Fai clic su Applica modifiche per aggiungere i display specificati al dispositivo virtuale in esecuzione.

Aggiungi più display alla scheda Controlli estesi dell'emulatore.

Nuovi dispositivi virtuali e modelli di progetto per Android Automotive OS

Quando crei un nuovo progetto utilizzando Android Studio, ora puoi scegliere tra tre modelli nella scheda Automotive della procedura guidata Crea nuovo progetto: Nessuna attività, Servizio multimediale e Servizio di messaggistica. Per i progetti esistenti, puoi aggiungere il supporto per i dispositivi Android Automotive selezionando File > Nuovo > Nuovo modulo dalla barra dei menu e selezionando Modulo Automotive. La procedura guidata Crea nuovo modulo ti guida nella creazione di un nuovo modulo utilizzando uno dei modelli di progetto Android Automotive.

Selezionando un modello di progetto Android Automotive..

Inoltre, ora puoi creare un Android Virtual Device (AVD) per i dispositivi Android Automotive OS selezionando una delle seguenti opzioni nella scheda Automotive della procedura guidata Configurazione dispositivo virtuale.

  1. Polestar 2: crea un AVD che emuli l'unità principale di Polestar 2.
  2. Automotive (orizzontale 1024p): crea un AVD per unità principali Android Automotive generiche da 1024 x 768 px.

Selezione di un dispositivo virtuale Android Automotive..

Download ripristinabili dell'SDK

Quando scarichi componenti e strumenti dell'SDK utilizzando SDK Manager, Android Studio ora ti consente di riprendere i download interrotti (ad esempio a causa di un problema di rete) anziché riavviarli dall'inizio. Questo miglioramento è particolarmente utile per i download di grandi dimensioni, come l'emulatore Android o le immagini di sistema, quando la connettività a internet non è affidabile.

Inoltre, se hai un'attività di download dell'SDK in esecuzione in background, ora puoi mettere in pausa o riprendere il download utilizzando i controlli nella barra di stato.

Un'attività di download in background nella barra di stato con nuovi controlli che
            ti consentono di mettere in pausa o riprendere il download.

Un'attività di download in background nella barra di stato con nuovi controlli che ti consentono di mettere in pausa o riprendere il download.

Win32 deprecato

La versione a 32 bit di Android Studio per Windows non riceverà più aggiornamenti dopo dicembre 2019 e non riceverà più assistenza dopo dicembre 2020. Puoi continuare a utilizzare Android Studio. Tuttavia, per ricevere aggiornamenti aggiuntivi, esegui l'upgrade della workstation a una versione a 64 bit di Windows.

Per saperne di più, leggi il post del blog sul ritiro della versione a 32 bit di Windows.

Nuova opzione per ottimizzare il tempo di sincronizzazione di Gradle

Nelle versioni precedenti, Android Studio recuperava l'elenco di tutte le attività Gradle durante la sincronizzazione Gradle. Per i progetti di grandi dimensioni, il recupero dell'elenco delle attività potrebbe causare tempi di sincronizzazione lenti.

Per migliorare le prestazioni della sincronizzazione Gradle, vai a File > Impostazioni > Sperimentale e seleziona Non creare l'elenco delle attività Gradle durante la sincronizzazione Gradle.

Quando abiliti questa opzione, Android Studio salta la creazione dell'elenco delle attività durante la sincronizzazione, il che consente a Gradle Sync di completarsi più rapidamente e migliora la reattività dell'interfaccia utente. Tieni presente che, quando l'IDE salta la creazione dell'elenco di attività, gli elenchi di attività nel riquadro Gradle sono vuoti e il completamento automatico del nome dell'attività nei file di build non funziona.

Nuova posizione per attivare/disattivare la modalità offline di Gradle

Per attivare o disattivare la modalità offline di Gradle, seleziona prima Visualizza > Finestre degli strumenti > Gradle dalla barra dei menu. Quindi, vicino alla parte superiore della finestra Gradle, fai clic su Attiva/Disattiva modalità offline Pulsante Gradle offline nel riquadro Gradle..

IntelliJ IDEA 2019.2

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

Per scoprire di più sui miglioramenti apportati da altre versioni di IntelliJ inclusi cumulativamente nella versione 2019.2, consulta le seguenti pagine:

Collaboratori della community

Grazie a tutti i membri della community che ci hanno aiutato a scoprire bug e altri modi per migliorare Android Studio 3.6. In particolare, vorremmo ringraziare le seguenti persone che hanno segnalato bug:

  • Albert Lo
  • Alexey Rott
  • Andrea Leganza
  • Benedikt Kolb
  • César Puerta
  • Curtis Kroetsch
  • Damian Wieczorek
  • Dan Lew
  • David Burström
  • Deepanshu
  • Egor Andreevici
  • Eli Graber
  • Emin Kokalari
  • Evan Tatarka
  • Frantisek Nagy
  • Greg Moens
  • Hannes Achleitner
  • Hans Petter Eide
  • Henning Bunk
  • Hugo Visser
  • Igor Escodro
  • Iñaki Villar
  • Javentira Lienata
  • Joe Rogers
  • Kristoffer Danielsson
  • Liran Barsisa
  • Louis CAD
  • Lóránt Pintér
  • Łukasz Wasylkowski
  • Luke Fielke
  • Malvin Sutanto
  • Masatoshi Kubode
  • Mathew Winters
  • Michael Bailey
  • Michał Górny
  • Mihai Neacsu
  • Mike Scamell
  • Monte Creasor
  • Nelson Osacky
  • Nelson Osacky
  • Nick Firmani
  • Nicklas Ansman Giertz
  • Niclas Kron
  • Nicolás Lichtmaier
  • Niek Haarman
  • Niels van Hove
  • Niklas Baudy
  • Renato Goncalves
  • Roar Grønmo
  • Ruslan Baratov
  • Sinan Kozak
  • Slawomir Czerwinski
  • Stefan Wolf
  • Stephen D'Amico
  • Tao Wang
  • Tomas Chladek
  • Tomáš Procházka
  • Tony Robalik
  • Torbjørn Sørli
  • Warren He
  • Yenchi Lin
  • Zac Sweers
  • 3.5 (agosto 2019)

    Android Studio 3.5 è una release principale e il risultato del progetto Marble. A partire dal rilascio di Android Studio 3.3, l'iniziativa Project Marble ha riguardato più release incentrate sul miglioramento di tre aree principali dell'IDE: integrità del sistema, perfezionamento delle funzionalità e correzione dei bug.

    Per informazioni su questi e altri aggiornamenti di Project Marble, leggi il post del blog per sviluppatori Android o le sezioni seguenti.

    Vogliamo anche ringraziare tutti i nostri collaboratori della community che hanno contribuito a questa release.

    3.5.3 (dicembre 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni.

    3.5.2 (novembre 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

    3.5.1 (ottobre 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

    Project Marble: integrità del sistema

    Questa sezione descrive le modifiche apportate ad Android Studio 3.5 incentrate sul miglioramento dell'integrità del sistema.

    Impostazioni di memoria consigliate

    Android Studio ora ti avvisa se rileva che potresti migliorare le prestazioni aumentando la quantità massima di RAM che il sistema operativo deve allocare per i processi di Android Studio, come l'IDE principale, il daemon Gradle e il daemon Kotlin. Puoi accettare le impostazioni consigliate facendo clic sul link di azione nella notifica oppure puoi modificare queste impostazioni manualmente selezionando File > Impostazioni (o Android Studio > Preferenze su macOS) e poi individuando la sezione Impostazioni memoria in Aspetto e comportamento > Impostazioni di sistema. Per saperne di più, vedi Dimensioni massime dell'heap.

    Una notifica relativa alle impostazioni di memoria consigliate.

    Una notifica relativa alle impostazioni di memoria consigliate.

    Report sull'utilizzo della memoria

    A volte i problemi di memoria in Android Studio sono difficili da riprodurre e segnalare. Per risolvere questo problema, Android Studio ti consente di generare un report sull'utilizzo della memoria facendo clic su Guida > Analizza utilizzo memoria dalla barra dei menu. Quando lo fai, l'IDE sanifica localmente i dati per le informazioni personali prima di chiedere se vuoi inviarli al team di Android Studio per contribuire a identificare l'origine dei problemi di memoria. Per saperne di più, vedi Eseguire un report sull'utilizzo della memoria.

    Un report sull'utilizzo della memoria.

    Un report sull'utilizzo della memoria.

    Windows: ottimizzazione dell'I/O di file antivirus

    Android Studio ora controlla automaticamente se alcune directory di progetto sono escluse dalla scansione antivirus in tempo reale. Quando è possibile apportare modifiche per migliorare le prestazioni di build, Android Studio ti invia una notifica e fornisce istruzioni su come ottimizzare la configurazione dell'antivirus. Per saperne di più, consulta la sezione Minimizzare l'impatto del software antivirus sulla velocità di build.

    Project Marble: rifinitura delle funzionalità

    Questa sezione descrive le modifiche apportate ad Android Studio 3.5 incentrate sul miglioramento delle funzionalità esistenti.

    Applica modifiche

    Applica modifiche ti consente di eseguire il push delle modifiche al codice e alle risorse nell'app in esecuzione senza riavviarla e, in alcuni casi, senza riavviare l'attività corrente. Applica modifiche implementa un approccio completamente nuovo per preservare lo stato dell'app. A differenza di Instant Run, che riscriveva il bytecode dell'APK, Apply Changes ridefinisce le classi al volo sfruttando l'instrumentation runtime supportata in Android 8.0 (livello API 26) o versioni successive.

    Per scoprire di più, consulta Applicare le modifiche.

    I pulsanti della barra degli strumenti per Applica modifiche.

    I pulsanti della barra degli strumenti per Applica modifiche.

    Flusso di deployment dell'app

    L'IDE ha un nuovo menu a discesa che ti consente di selezionare rapidamente il dispositivo su cui vuoi eseguire il deployment dell'app. Questo menu include anche una nuova opzione che ti consente di eseguire l'app su più dispositivi contemporaneamente.

    Menu a discesa del dispositivo di destinazione.

    Menu a discesa del dispositivo di destinazione.

    Sincronizzazione Gradle e rilevamento della cache migliorati

    L'IDE ora rileva meglio quando Gradle cancella periodicamente la cache di build quando riduce il consumo del disco rigido. Nelle versioni precedenti, questo stato causava l'IDE a segnalare dipendenze mancanti e la sincronizzazione Gradle non riusciva. Ora, l'IDE scarica le dipendenze in base alle necessità per garantire il completamento della sincronizzazione Gradle.

    Output degli errori di build migliorato

    La finestra Build Icona della finestra di build ora fornisce report sugli errori migliori, ad esempio un link al file e alla riga dell'errore segnalato, per le seguenti procedure di build:

    • Compilazione e collegamento di AAPT
    • R8 e ProGuard
    • Dexing
    • Unione delle risorse
    • Analisi del file XML
    • Compilazione Javac, Kotlinc e CMake

    Upgrade dei progetti

    Esperienza di aggiornamento migliorata per fornire più informazioni e azioni per aiutarti ad aggiornare l'IDE e il plug-in Android per Gradle. Ad esempio, altri errori di sincronizzazione e build includono azioni per aiutarti a ridurre gli errori durante l'aggiornamento.

    È importante tenere presente che puoi aggiornare l'IDE indipendentemente da altri componenti, come il plug-in Android per Gradle. In questo modo, puoi aggiornare in sicurezza l'IDE non appena è disponibile una versione più recente e aggiornare gli altri componenti in un secondo momento.

    Layout Editor

    Android Studio 3.5 include diversi miglioramenti alla visualizzazione, alla gestione e all'interazione con il layout.

    Quando lavori con ConstraintLayout, una nuova sezione Vincoli nel riquadro Attributi elenca le relazioni di vincolo del componente UI selezionato. Puoi selezionare un vincolo dalla superficie di progettazione o dall'elenco dei vincoli per evidenziarlo in entrambe le aree.

    Relazioni di vincolo per un elemento UI selezionato.

    Relazioni di vincolo per un elemento UI selezionato.

    Allo stesso modo, ora puoi eliminare un vincolo selezionandolo e premendo il tasto Delete. Puoi anche eliminare un vincolo tenendo premuto il tasto Control (Command su macOS) e facendo clic sull'ancoraggio del vincolo. Tieni presente che quando tieni premuto il tasto Control o Command e passi il mouse sopra un ancoraggio, tutti i vincoli associati diventano rossi per indicare che puoi fare clic per eliminarli.

    Quando viene selezionata una visualizzazione, puoi creare un vincolo facendo clic su una delle icone + nella sezione Widget vincolo del riquadro Attributi, come mostrato nell'immagine seguente. Quando crei un nuovo vincolo, l'editor del layout ora seleziona ed evidenzia il vincolo, fornendo un feedback visivo immediato su ciò che hai appena aggiunto.

    Un'animazione che mostra come utilizzare il widget di vincolo per creare
            vincoli.

    Utilizzo del widget dei vincoli per creare vincoli .

    Quando crei un vincolo, l'editor layout ora mostra solo i punti di ancoraggio idonei a cui puoi applicare il vincolo. In precedenza, l'editor del layout evidenziava tutti i punti di ancoraggio in tutte le visualizzazioni, indipendentemente dal fatto che potessi vincolarli. Inoltre, una sovrapposizione blu ora evidenzia la destinazione del vincolo. Questa evidenziazione è particolarmente utile quando si tenta di vincolare un componente che si sovrappone a un altro.

    Un'animazione che mostra come creare un vincolo per un componente sovrapposto
            in Android Studio 3.4.

    Creazione di un vincolo per un componente sovrapposto in Android Studio 3.4.

    Un'animazione che mostra come creare un vincolo per un componente sovrapposto in Android Studio 3.5.

    Creazione di un vincolo per un componente sovrapposto in Android Studio 3.5.

    Oltre agli aggiornamenti di cui sopra, Android Studio 3.5 contiene anche i seguenti miglioramenti dell'editor layout:

    • Il widget Vincolo e il menu a discesa del margine predefinito ora consentono di utilizzare le risorse delle dimensioni per i margini.
    • Nella barra degli strumenti dell'editor di layout, l'elenco dei dispositivi che determinano le dimensioni dell'area di progettazione è stato aggiornato. Inoltre, il comportamento di snapping durante il ridimensionamento è stato migliorato e i punti di manipolazione del ridimensionamento sulla superficie di progettazione sono ora sempre visibili. Durante il ridimensionamento, vengono visualizzate nuove sovrapposizioni che mostrano le dimensioni comuni dei dispositivi.
    • L'editor di layout ha una nuova combinazione di colori che migliora la coerenza e riduce il contrasto tra componenti, testo e vincoli.
    • La modalità Progetto ora include il supporto del testo per alcuni componenti in cui il testo non veniva visualizzato.

    Per ulteriori informazioni su queste modifiche, consulta Android Studio Project Marble: Layout Editor.

    Data Binding

    Oltre ad aggiungere il supporto dell'elaborazione incrementale delle annotazioni per il data binding, l'IDE migliora le funzionalità e le prestazioni dell'editor intelligente quando si creano espressioni di data binding in XML.

    Un'animazione che mostra le prestazioni dell'editor di codice in Android Studio
            3.4.

    Prestazioni dell'editor di codice su Android Studio 3.4.

    Un'animazione che mostra le prestazioni dell'editor di codice su Android Studio
            3.5.

    Prestazioni di modifica del codice migliorate su Android Studio 3.5.

    Supporto migliorato per i progetti C/C++

    Android Studio 3.5 include diverse modifiche che migliorano il supporto per i progetti C/C++.

    Miglioramenti al riquadro Crea varianti per la sincronizzazione di una singola variante

    Ora puoi specificare sia la variante di build attiva sia l'ABI attiva nel riquadro Varianti di build. Questa funzionalità semplifica la configurazione della build per modulo e può anche migliorare le prestazioni di sincronizzazione di Gradle.

    Per scoprire di più, consulta Modificare la variante di build.

    Il riquadro Varianti build mostra la selezione di una singola variante per ABI.

    Il riquadro Crea varianti con selezione di una singola variante per ABI.

    Versioni affiancate dell'NDK

    Ora puoi utilizzare più versioni dell'NDK contemporaneamente. Questa funzionalità offre maggiore flessibilità durante la configurazione dei progetti, ad esempio se hai progetti che utilizzano versioni diverse dell'NDK sulla stessa macchina.

    Se il tuo progetto utilizza il plug-in Android Gradle 3.5.0 o versioni successive, puoi anche specificare la versione dell'NDK che ogni modulo del progetto deve utilizzare. Puoi utilizzare questa funzionalità per creare build riproducibili e per mitigare le incompatibilità tra le versioni dell'NDK e il plug-in Android Gradle.

    Per saperne di più, consulta Installare e configurare NDK, CMake e LLDB.

    Supporto ChromeOS

    Android Studio ora supporta ufficialmente i dispositivi ChromeOS, come HP Chromebook x360 14, Acer Chromebook 13/Spin 13 e altri che puoi leggere nei requisiti di sistema. Per iniziare, scarica Android Studio sul tuo dispositivo ChromeOS compatibile e segui le istruzioni di installazione.

    Nota: Android Studio su ChromeOS attualmente supporta il deployment dell'app solo su un dispositivo hardware connesso. Per saperne di più, leggi Eseguire app su un dispositivo hardware.

    Pubblicazione condizionale per i moduli delle funzionalità

    La pubblicazione condizionale ti consente di impostare determinati requisiti di configurazione del dispositivo per il download automatico dei moduli delle funzionalità durante l'installazione dell'app. Ad esempio, puoi configurare un modulo della funzionalità che includa la funzionalità per la realtà aumentata (AR) da rendere disponibile all'installazione dell'app solo per i dispositivi che supportano l'AR.

    Questo meccanismo di distribuzione attualmente supporta il controllo del download di un modulo al momento dell'installazione dell'app in base alle seguenti configurazioni del dispositivo:

    • Funzionalità hardware e software del dispositivo, inclusa la versione OpenGL ES
    • Paese utente
    • Livello API

    Se un dispositivo non soddisfa tutti i requisiti specificati, il modulo non viene scaricato al momento dell'installazione dell'app. Tuttavia, la tua app potrebbe in seguito richiedere di scaricare il modulo on demand utilizzando Play Core Library. Per saperne di più, leggi Configurare la consegna condizionale.

    IntelliJ IDEA 2019.1

    L'IDE Android Studio principale è stato aggiornato con i miglioramenti di IntelliJ IDEA tramite la release 2019.1, come la personalizzazione del tema.

    L'ultima versione di IntelliJ inclusa in Android Studio era la 2018.3.4. Per saperne di più sui miglioramenti apportati da altre versioni di IntelliJ inclusi cumulativamente in questa release di Android Studio, consulta i seguenti aggiornamenti di correzione dei bug:

    Aggiornamenti del plug-in Android per Gradle 3.5.0

    Per informazioni sulle novità del plug-in Android per Gradle 3.5.0, ad esempio il supporto migliorato per l'elaborazione incrementale delle annotazioni e i test unità memorizzabili nella cache, consulta le note di rilascio.

    Collaboratori della community

    Grazie a tutti i membri della community che ci hanno aiutato a scoprire bug e altri modi per migliorare Android Studio 3.5. In particolare, vorremmo ringraziare le seguenti persone che hanno segnalato bug P0 e P1:

    3.4 (aprile 2019)

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

    3.4.2 (luglio 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

    3.4.1 (maggio 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

    Problemi noti della versione 3.4.0

    • La profilazione è disattivata quando esegui il deployment dell'app su un dispositivo con Android Q Beta.

    • Quando utilizzi la libreria Data Binding, LiveDataListener.onChanged() potrebbe non riuscire con un errore NPE. Una correzione per questo problema verrà inclusa in Android Studio 3.4.1 ed è già disponibile nell'ultima versione di anteprima di Android Studio 3.5. (vedi problema n. 122066788)

    IntelliJ IDEA 2018.3.4

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

    Aggiornamenti del plug-in Android per Gradle 3.4.0

    Per informazioni sulle novità del plug-in Android per Gradle 3.4.0, consulta le relative note di rilascio.

    Finestra di dialogo Nuova struttura del progetto

    La nuova finestra di dialogo Struttura progetto (PSD) semplifica l'aggiornamento delle dipendenze e la configurazione di diversi aspetti del progetto, come moduli, varianti di build, configurazioni di firma e variabili di build.

    Puoi aprire il file PSD selezionando File > Struttura del progetto dalla barra del menu. Puoi anche aprire il file PSD premendo Ctrl+Shift+Alt+S su Windows e Linux o Command+; (punto e virgola) su macOS. Di seguito sono riportate le descrizioni di alcune delle sezioni nuove e aggiornate del PSD.

    Variabili

    La nuova sezione delle variabili del file PSD consente di creare e gestire le variabili di build, ad esempio quelle per mantenere coerenti i numeri di versione delle dipendenze nel progetto.

    • Visualizza e modifica rapidamente le variabili di build già esistenti negli script di build Gradle del tuo progetto.
    • Aggiungi nuove variabili di build a livello di progetto o modulo direttamente dal PSD.

    Nota:se i file di configurazione della build esistenti assegnano valori tramite script Groovy complessi, potresti non essere in grado di modificarli tramite PSD. Inoltre, non puoi modificare i file di build scritti in Kotlin utilizzando il PSD.

    Moduli

    Configura le proprietà applicate a tutte le varianti di build in un modulo esistente o aggiungi nuovi moduli al progetto dalla sezione Moduli. Ad esempio, qui puoi configurare le proprietà defaultConfig o gestire le configurazioni di firma.

    Dipendenze

    Esamina e visualizza ogni dipendenza nel grafico delle dipendenze del tuo progetto, come risolto da Gradle durante la sincronizzazione del progetto, seguendo questi passaggi:

    1. Nel riquadro a sinistra del PSD, seleziona Dipendenze.
    2. Nel riquadro Moduli, seleziona un modulo per cui vuoi esaminare le dipendenze risolte.
    3. Sul lato destro del PSD, apri il riquadro Dipendenze risolte, che è mostrato di seguito.

    Puoi anche cercare e aggiungere rapidamente dipendenze al tuo progetto selezionando prima un modulo dalla sezione Dipendenze del PSD, facendo clic sul pulsante (+) nella sezione Dipendenze dichiarate e selezionando il tipo di dipendenza che vuoi aggiungere.

    A seconda del tipo di dipendenza selezionato, dovresti visualizzare una finestra di dialogo, simile a quella riportata di seguito, che ti aiuta ad aggiungere la dipendenza al modulo.

    Varianti di compilazione

    In questa sezione del PSD, crea e configura le varianti di build e i gusti dei prodotti per ogni modulo del progetto. Puoi aggiungere segnaposto manifest, file ProGuard, assegnare chiavi di firma e altro ancora.

    Suggerimenti

    Visualizza gli aggiornamenti suggeriti per le dipendenze del progetto e le variabili di build nella sezione Suggerimenti, come mostrato di seguito.

    Nuovo Resource Manager

    Resource Manager è una nuova finestra degli strumenti per importare, creare, gestire e utilizzare le risorse nella tua app. Puoi aprire la finestra degli strumenti selezionando Visualizza > Finestre degli strumenti > Resource Manager dalla barra dei menu. Resource Manager ti consente di:

    • Visualizza le risorse: puoi visualizzare in anteprima drawables, colori e layout per trovare rapidamente le risorse di cui hai bisogno.
    • Importazione collettiva:puoi importare più asset disegnabili contemporaneamente trascinandoli nella finestra dello strumento Resource Manager o utilizzando la procedura guidata Importa disegnabili. Per accedere alla procedura guidata, seleziona il pulsante (+) nell'angolo in alto a sinistra della finestra degli strumenti e poi seleziona Importa risorse disegnabili dal menu a discesa.
    • Convertire i file SVG in oggetti VectorDrawable:puoi utilizzare la procedura guidata Importa risorse disegnabili per convertire le immagini SVG in oggetti VectorDrawable.
    • Trascinare gli asset:dalla finestra degli strumenti Resource Manager, puoi trascinare i drawables sia nella visualizzazione Progettazione che in quella XML dell'editor layout.
    • Visualizzare versioni alternative: ora puoi visualizzare versioni alternative delle tue risorse facendo doppio clic su una risorsa nella finestra Strumento. Questa visualizzazione mostra le diverse versioni che hai creato e i qualificatori che sono stati inclusi.
    • Visualizzazioni a riquadri e a elenco:puoi modificare la visualizzazione all'interno della finestra dello strumento per visualizzare le risorse in disposizioni diverse.

    Per saperne di più, leggi la guida su come gestire le risorse delle app.

    Controllo degli ID build durante la profilazione e il debug degli APK

    Quando fornisci i file dei simboli di debug per le librerie condivise .so all'interno dell'APK, Android Studio verifica che l'ID build dei file dei simboli forniti corrisponda all'ID build delle librerie .so all'interno dell'APK.

    Se crei le librerie native nel tuo APK con un ID build, Android Studio verifica se l'ID build nei file di simboli corrisponde all'ID build nelle librerie native e rifiuta i file di simboli in caso di mancata corrispondenza. Se non hai eseguito la build con un ID build, la fornitura di file di simboli errati potrebbe causare problemi di debug.

    R8 attivato per impostazione predefinita

    R8 integra la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in DEX in un unico passaggio, con conseguente miglioramento notevole del rendimento della build. R8 è stato introdotto nel plug-in Android per Gradle 3.3.0 ed è ora abilitato per impostazione predefinita per i progetti di app e librerie Android che utilizzano il plug-in 3.4.0 e versioni successive.

    L'immagine seguente fornisce una panoramica di alto livello della procedura di compilazione prima dell'introduzione di R8.

    Prima di R8, ProGuard era un passaggio di compilazione diverso da dexing e
            desugaring.

    Ora, con R8, la rimozione dello zucchero, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in DEX (D8) vengono completati in un unico passaggio, come illustrato di seguito.

    Con R8, la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la creazione di file DEX
            vengono eseguiti in un unico passaggio di compilazione.

    Tieni presente che R8 è progettato per funzionare con le regole ProGuard esistenti, quindi probabilmente non dovrai intraprendere alcuna azione per trarre vantaggio da R8. Tuttavia, poiché è una tecnologia diversa da ProGuard progettata specificamente per i progetti Android, la riduzione e l'ottimizzazione potrebbero comportare la rimozione di codice che ProGuard potrebbe non aver rimosso. Pertanto, in questa improbabile situazione, potresti dover aggiungere regole aggiuntive per mantenere il codice nell'output della build.

    Se riscontri problemi durante l'utilizzo di R8, leggi le domande frequenti sulla compatibilità di R8 per verificare se esiste una soluzione al tuo problema. Se una soluzione non è documentata, segnala un bug. Puoi disattivare R8 aggiungendo una delle seguenti righe al file gradle.properties del tuo progetto:

        # Disables R8 for Android Library modules only.
        android.enableR8.libraries = false
        # Disables R8 for all modules.
        android.enableR8 = false
        
      

    Nota:per un determinato tipo di build, se imposti useProguard su false nel file build.gradle del modulo dell'app, il plug-in Android per Gradle utilizza R8 per ridurre il codice dell'app per quel tipo di build, indipendentemente dal fatto che tu disattivi R8 nel file gradle.properties del progetto.

    Ora tutti i tipi di argomenti supportati dal componente di navigazione sono supportati nell'editor di navigazione. Per saperne di più sui tipi supportati, vedi Trasferire dati tra le destinazioni.

    Miglioramenti dell'editor di layout {:#layout-editor}

    Il riquadro Attributi nell'editor del layout è stato semplificato in un'unica pagina con sezioni che puoi espandere per visualizzare gli attributi che puoi configurare. Il riquadro Attributi include anche i seguenti aggiornamenti:

    • Una nuova sezione Attributi dichiarati elenca gli attributi specificati dal file di layout e ti consente di aggiungerne rapidamente di nuovi.
    • Il riquadro Attributi ora include anche indicatori accanto a ogni attributo che sono pieni quando il valore dell'attributo è un riferimento alla risorsa e vuoti altrimenti.
    • Gli attributi con errori o avvisi ora sono evidenziati. I valori evidenziati in rosso indicano errori (ad esempio, quando utilizzi valori di layout non validi) e quelli evidenziati in arancione indicano avvisi (ad esempio, quando utilizzi valori codificati).

    Nuova azione di intent per importare rapidamente le dipendenze

    Se inizi a utilizzare determinate classi Jetpack e Firebase nel tuo codice, una nuova azione di intent suggerisce di aggiungere la dipendenza della libreria Gradle richiesta al tuo progetto, se non l'hai già fatto. Ad esempio, se fai riferimento alla classe WorkManager senza prima importare la dipendenza android.arch.work:work-runtime richiesta, un'azione di intent ti consente di farlo facilmente con un solo clic, come mostrato di seguito.

    In particolare, poiché Jetpack ha ricompattato la libreria di supporto in pacchetti discreti più facili da gestire e aggiornare, questa azione di intent ti aiuta ad aggiungere rapidamente solo le dipendenze necessarie per i componenti Jetpack che vuoi utilizzare.

    3.3 (gennaio 2019)

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

    3.3.2 (marzo 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug importanti, leggi il post correlato sul blog degli aggiornamenti delle release.

    3.3.1 (febbraio 2019)

    Questo aggiornamento minore include varie correzioni di bug e miglioramenti delle prestazioni.

    IntelliJ IDEA 2018.2.2

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

    Aggiornamenti del plug-in Android per Gradle

    Per informazioni sulle novità del plug-in Android per Gradle, consulta le relative note di rilascio.

    L'editor di navigazione ti consente di visualizzare e creare rapidamente la navigazione nella tua app utilizzando il componente dell'architettura di navigazione.

    Per maggiori informazioni, vedi Implementare la navigazione con il componente dell'architettura di navigazione.

    Eliminare le directory di Android Studio inutilizzate

    Quando esegui una versione principale di Android Studio per la prima volta, cerca le directory contenenti cache, impostazioni, indici e log per le versioni di Android Studio per le quali non è possibile trovare un'installazione corrispondente. Viene visualizzata la finestra di dialogo Elimina directory Android Studio inutilizzate, che mostra le posizioni, le dimensioni e le date di ultima modifica di queste directory inutilizzate e offre un'opzione per eliminarle.

    Le directory che Android Studio prende in considerazione per l'eliminazione sono elencate di seguito:

    • Linux: ~/.AndroidStudio[Preview]X.Y
    • Mac: ~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]X.Y
    • Windows: %USER%.AndroidStudio[Preview]X.Y

    Miglioramenti di lint

    Lint, se richiamato da Gradle, è molto più veloce: i progetti più grandi possono prevedere che Lint venga eseguito fino a quattro volte più velocemente.

    Procedura guidata Crea nuovo progetto

    La procedura guidata Crea nuovo progetto ha un nuovo aspetto e contiene aggiornamenti che aiutano a semplificare la creazione di nuovi progetti Android Studio.

    Per saperne di più, consulta Creare un progetto.

    Aggiornamenti di Profiler

    Android Studio 3.3 include aggiornamenti a diversi profiler individuali.

    Prestazioni migliorate

    In base al feedback degli utenti, le prestazioni di rendering durante l'utilizzo dei profiler sono state notevolmente migliorate. Continua a fornire feedback, soprattutto se continui a riscontrare problemi di prestazioni.

    Opzioni di monitoraggio dell'allocazione della memoria di Profiler

    Per migliorare le prestazioni dell'app durante la profilazione, Memory Profiler ora campiona periodicamente le allocazioni di memoria per impostazione predefinita. Se vuoi, puoi modificare questo comportamento utilizzando il menu a discesa Monitoraggio dell'allocazione durante il test sui dispositivi con Android 8.0 (livello API 26) o versioni successive.

    Nel menu a discesa Monitoraggio allocazione puoi scegliere tra le seguenti modalità:

    • Completo:acquisisce tutte le allocazioni di memoria degli oggetti. Tieni presente che se hai un'app che alloca molti oggetti, potresti riscontrare problemi di prestazioni significativi durante la profilazione.

    • Campionato:acquisisce un campione periodico delle allocazioni di memoria degli oggetti. Questo è il comportamento predefinito e ha un impatto minore sulle prestazioni dell'app durante la profilazione. Potresti riscontrare alcuni problemi di prestazioni con le app che allocano molti oggetti in un breve periodo di tempo.

    • Off:disattiva l'allocazione della memoria. Se non è già selezionata, questa modalità viene attivata automaticamente durante l'acquisizione di una registrazione della CPU e poi ripristinata all'impostazione precedente al termine della registrazione. Puoi modificare questo comportamento nella finestra di dialogo di configurazione della registrazione della CPU.

      Il monitoraggio riguarda sia gli oggetti Java che i riferimenti JNI.

    Ispezionare i dati di rendering dei frame

    In CPU Profiler, ora puoi esaminare il tempo impiegato dalla tua app Java per eseguire il rendering di ogni frame nel thread UI principale e in RenderThread. Questi dati potrebbero essere utili per esaminare i colli di bottiglia che causano problemi di UI e frame rate bassi. Ad esempio, ogni frame che richiede più di 16 ms per mantenere un framerate fluido viene visualizzato in rosso.

    Per visualizzare i dati di rendering dei frame, registra una traccia utilizzando una configurazione che ti consenta di tracciare le chiamate di sistema. Dopo aver registrato la traccia, cerca le informazioni su ogni frame lungo la cronologia della registrazione nella sezione FRAME, come mostrato di seguito.

    Per scoprire di più su come analizzare e risolvere i problemi di framerate, leggi Rendering lento.

    Frammenti nella cronologia degli eventi

    La sequenza temporale degli eventi ora mostra quando i frammenti vengono allegati e staccati. Inoltre, quando passi il mouse sopra un frammento, una descrizione comando mostra lo stato del frammento.

    Visualizzare il testo formattato per i payload di connessione in Network Profiler

    In precedenza, Network Profiler visualizzava solo il testo non elaborato dei payload di connessione. Android Studio 3.3 ora formatta per impostazione predefinita alcuni tipi di testo, tra cui JSON, XML e HTML. Nelle schede Risposta e Richiesta, fai clic sul link Visualizza analisi per visualizzare il testo formattato e fai clic sul link Visualizza origine per visualizzare il testo non elaborato.

    Per ulteriori informazioni, consulta Ispezionare il traffico di rete con Network Profiler.

    Download automatico dei componenti dell'SDK

    Quando il tuo progetto richiede un componente SDK dalle piattaforme SDK, NDK o CMake, Gradle ora tenta di scaricare automaticamente i pacchetti richiesti, a condizione che tu abbia precedentemente accettato eventuali contratti di licenza correlati utilizzando SDK Manager.

    Per ulteriori informazioni, vedi Download automatico dei pacchetti mancanti con Gradle.

    Supporto per Clang-Tidy

    Android Studio ora include il supporto per l'analisi statica del codice utilizzando Clang-Tidy per i progetti che includono codice nativo. Per abilitare il supporto di Clang-Tidy, aggiorna l'NDK alla versione r18 o successive.

    Puoi quindi attivare o riattivare le ispezioni aprendo la finestra di dialogo Impostazioni o Preferenze e andando a Editor > Ispezioni > C/C++ > Generale > Clang-Tidy. Quando selezioni questo controllo nella finestra di dialogo Impostazioni o Preferenze, puoi anche visualizzare l'elenco dei controlli Clang-Tidy attivati e disattivati nella sezione Opzione del riquadro più a destra. Per attivare controlli aggiuntivi, aggiungili all'elenco e fai clic su Applica.

    Per configurare Clang-Tidy con opzioni aggiuntive, fai clic su Configura opzioni di controllo Clang-Tidy e aggiungile nella finestra di dialogo che si apre.

    Rimozione delle opzioni per la personalizzazione di C++

    Le seguenti opzioni sono state rimosse dalla finestra di dialogo Personalizza il supporto C++:

    • Supporto delle eccezioni (-fexceptions)
    • Supporto delle informazioni sul tipo di runtime (-ftti)

    I rispettivi comportamenti sono abilitati per tutti i progetti creati tramite Android Studio.

    CMake versione 3.10.2

    La versione 3.10.2 di CMake è ora inclusa in SDK Manager. Tieni presente che Gradle utilizza ancora la versione 3.6.0 per impostazione predefinita.

    Per specificare una versione di CMake da utilizzare per Gradle, aggiungi quanto segue al file build.gradle del modulo:

        android {
            ...
            externalNativeBuild {
                cmake {
                    ...
                    version "3.10.2"
                }
            }
        }
        
      

    Per ulteriori informazioni sulla configurazione di CMake in build.gradle, vedi Configurare Gradle manualmente.

    Nuova sintassi "+" per specificare le versioni minime di CMake

    Quando specifichi una versione di CMake nel file build.gradle del modulo principale, ora puoi aggiungere un "+" per corrispondere al comportamento del comando cmake_minimum_required() di CMake.

    Attenzione:l'utilizzo della sintassi "+" con altre dipendenze di compilazione è sconsigliato, in quanto le dipendenze dinamiche possono causare aggiornamenti imprevisti delle versioni e difficoltà nella risoluzione delle differenze tra le versioni.

    Android App Bundle ora supporta le app istantanee

    Android Studio ora ti consente di creare Android App Bundle con il supporto completo di Google Play Instant. In altre parole, ora puoi creare e implementare sia l'app installata sia le app istantanee da un unico progetto Android Studio e includerle in un unico Android App Bundle.

    Se stai creando un nuovo progetto Android Studio utilizzando la finestra di dialogo Crea nuovo progetto, assicurati di selezionare la casella accanto a Configura il progetto > Questo progetto supporterà le app istantanee. Android Studio crea quindi un nuovo progetto di app come di consueto, ma include le seguenti proprietà nel manifest per aggiungere il supporto delle app istantanee al modulo base della tua app:

        <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
            <dist:module dist:instant="true" />
            ...
        </manifest>
        
      

    A questo punto puoi creare un modulo di funzionalità istantanea selezionando File > Nuovo > Nuovo modulo dalla barra dei menu e poi selezionando Modulo di funzionalità dinamica istantanea dalla finestra di dialogo Crea nuovo modulo. Tieni presente che la creazione di questo modulo attiva immediatamente anche il modulo di base dell'app.

    Per eseguire il deployment dell'app su un dispositivo locale come esperienza istantanea, modifica la configurazione di esecuzione e seleziona la casella accanto a Generale > Esegui il deployment come app istantanea.

    Sincronizzazione dei progetti con una sola variante

    La sincronizzazione del progetto con la configurazione di build è un passaggio importante per consentire ad Android Studio di comprendere la struttura del progetto. Tuttavia, questo processo può richiedere molto tempo per i progetti di grandi dimensioni. Se il tuo progetto utilizza più varianti di build, ora puoi ottimizzare le sincronizzazioni del progetto limitandole solo alla variante attualmente selezionata.

    Per attivare questa ottimizzazione, devi utilizzare Android Studio 3.3 o versioni successive con il plug-in Android Gradle 3.3.0 o versioni successive. Quando soddisfi questi requisiti, l'IDE ti chiede di attivare questa ottimizzazione quando sincronizzi il progetto. L'ottimizzazione è attivata per impostazione predefinita anche nei nuovi progetti.

    Per attivare manualmente questa ottimizzazione, fai clic su File > Impostazioni > Sperimentale > Gradle (Android Studio > Preferenze > Sperimentale > Gradle su Mac) e seleziona la casella di controllo Sincronizza solo la variante attiva.

    Nota:al momento, questa ottimizzazione supporta solo i progetti che includono il linguaggio di programmazione Java. Se, ad esempio, l'IDE rileva codice Kotlin o C++ nel tuo progetto, non attiva automaticamente questa ottimizzazione e non devi attivarla manualmente.

    Per saperne di più, vedi Attivare la sincronizzazione dei progetti con una sola variante.

    Fornire un feedback rapido

    Se hai attivato la condivisione delle statistiche di utilizzo per contribuire a migliorare Android Studio, vedrai queste due nuove icone nella barra di stato nella parte inferiore della finestra dell'IDE:

    Basta fare clic sull'icona che rappresenta meglio la tua esperienza attuale con l'IDE. In questo modo, l'IDE invia statistiche sull'utilizzo che consentono al team di Android Studio di comprendere meglio il tuo sentiment. In alcuni casi, ad esempio quando indichi un'esperienza negativa con l'IDE, avrai l'opportunità di fornire un feedback aggiuntivo.

    Se non l'hai ancora fatto, puoi attivare la condivisione delle statistiche sull'utilizzo aprendo la finestra di dialogo Impostazioni Preferenze su un Mac, andando su Aspetto e comportamento > Impostazioni di sistema > Condivisione dei dati e selezionando Invia statistiche sull'utilizzo a Google.

    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.

    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 si è arrestato in modo anomalo durante le transizioni dei fragment quando si utilizzavano i profiler.
      • Il debugger ha avuto un arresto 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 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 sui 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 attivato, le build dei nuovi progetti Kotlin non riuscivano 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 compatibile con Gradle è stata rimossa dall'area Prima del lancio in Configurazioni di esecuzione/debug. Il risultato è stato che i progetti non venivano compilati quando veniva fatto clic sul pulsante Esegui o Debug, il che a sua volta causava 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 viene apportata dopo la prima sincronizzazione di Gradle al caricamento del progetto.

    • Il debugger si è arrestato in modo anomalo durante il debug di un layout con una casella di testo se era abilitata la profilazione avanzata.
    • Android Studio si è bloccato dopo aver 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.
    • In alcuni elementi vettoriali importati da file SVG mancavano alcuni elementi.
    • L'avviso relativo al ritiro della configurazione delle dipendenze compile è stato aggiornato con indicazioni migliori relative 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 mostrati 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 Ctrl (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 il data binding:

    • Ora puoi utilizzare un oggetto LiveData come campo osservabile nelle espressioni di data binding. 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 data binding. 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. Ciò può migliorare notevolmente le prestazioni per i progetti multimodulo.

    Compilatore e Gradle

    D8 è il compilatore DEX predefinito

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

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

    • Dexing più rapido
    • Utilizzo della memoria inferiore
    • 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 lo zucchero sintattico in una forma che il compilatore può elaborare in modo più efficiente.

    Puoi disattivare la rimozione incrementale dello zucchero 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, vedi Monitorare 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 numerosi 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 ora viene 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 Profiler CPU

    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 Campionato (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 di memoria e i dump dell'heap

    CPU Profiler e Memory Profiler includono una funzionalità di ricerca che ti consente di filtrare i risultati della 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 Profiler di rete

    Network Profiler ora include una scheda Richiesta che fornisce dettagli sulle richieste di rete durante la cronologia selezionata. Nelle versioni precedenti, il Profiler di rete 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 schede seguenti per visualizzare maggiori 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 porzione selezionata della sequenza temporale in tutti i thread della CPU dell'app. Per ogni richiesta, puoi esaminare 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'ispettore layout ha acquisito nuove funzionalità, tra cui alcune funzionalità precedentemente fornite dagli strumenti Hierarchy Viewer e Pixel Perfect ritirati:

    • 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 nell'editor layout ha ricevuto molti miglioramenti:

    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 nel controllo visualizzazione nella parte superiore della finestra Attributi.

    Esegui ed Esecuzione rapida

    Il comportamento dell'opzione Utilizza 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 deployment 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 Developer Preview.

    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 i file Gradle è stato spostato nel menu File.
    • Il comando Monitoraggio dispositivo è stato rimosso, come descritto di seguito.

    Monitoraggio dispositivo 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.

    3.0 (ottobre 2017)

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

    Utenti macOS:se stai aggiornando una versione precedente di Android Studio, potresti visualizzare una finestra di dialogo di errore di aggiornamento con il messaggio "Sono stati rilevati alcuni conflitti nell'area di installazione". Ignora questo errore e fai clic su Annulla per riprendere l'installazione.

    3.0.1 (novembre 2017)

    Si tratta di un aggiornamento secondario di Android Studio 3.0 che include correzioni di bug generali e miglioramenti delle prestazioni.

    Plug-in Android per Gradle 3.0.0

    Il nuovo plug-in Android per Gradle include una serie di miglioramenti e nuove funzionalità, ma soprattutto migliora le prestazioni di build per i progetti con un numero elevato di moduli. Quando utilizzi il nuovo plug-in con questi progetti di grandi dimensioni, dovresti riscontrare quanto segue:

    • Tempi di configurazione della build più rapidi grazie alla nuova risoluzione ritardata delle dipendenze.
    • Risoluzione delle dipendenze in base alle varianti solo per i progetti e le varianti che stai creando.
    • Tempi di build incrementali più rapidi quando applichi modifiche semplici al codice o alle risorse.

    Nota: questi miglioramenti hanno richiesto modifiche significative che interrompono alcuni dei comportamenti, DSL e API del plug-in. L'upgrade alla versione 3.0.0 potrebbe richiedere modifiche ai file di build e ai plug-in Gradle.

    Questa versione include anche:

    • Supporto di Android 8.0.
    • Supporto per la creazione di APK separati in base alle risorse della lingua.
    • Supporto delle librerie Java 8 e delle funzionalità del linguaggio Java 8 (senza il compilatore Jack).
    • Supporto della libreria di supporto dei test Android 1.0 (utilità di test Android e Android Test Orchestrator).
    • Miglioramento della velocità di build di ndk-build e cmake.
    • Miglioramento della velocità di sincronizzazione di Gradle.
    • AAPT2 ora è abilitato per impostazione predefinita.
    • L'utilizzo di ndkCompile ora è più limitato. Devi invece eseguire la migrazione a utilizzando CMake o ndk-build per compilare il codice nativo che vuoi pacchettizzare nel tuo APK. Per saperne di più, leggi Eseguire la migrazione da ndkcompile.

    Per ulteriori informazioni sulle modifiche, consulta le note di rilascio del plug-in Android per Gradle.

    Se vuoi eseguire l'upgrade al nuovo plug-in, consulta Migrazione al plug-in Android per Gradle 3.0.0.

    Supporto di Kotlin

    Come annunciato al Google I/O 2017, il linguaggio di programmazione Kotlin è ora ufficialmente supportato su Android. Pertanto, con questa release, Android Studio include il supporto del linguaggio Kotlin per lo sviluppo Android.

    Puoi incorporare Kotlin nel tuo progetto convertendo un file Java in Kotlin (fai clic su Codice > Converti file Java in file Kotlin) o creando un nuovo progetto abilitato per Kotlin utilizzando la procedura guidata Nuovo progetto.

    Per iniziare, scopri come aggiungere Kotlin al tuo progetto.

    Supporto delle funzionalità del linguaggio Java 8

    Ora puoi utilizzare alcune funzionalità del linguaggio Java 8 e utilizzare librerie create con Java 8. Jack non è più necessario e devi prima disattivarlo per utilizzare il supporto migliorato di Java 8 integrato nella toolchain predefinita.

    Per aggiornare il progetto in modo che supporti la nuova toolchain del linguaggio Java 8, aggiorna Compatibilità origine e Compatibilità target a 1.8 nella finestra di dialogo Struttura progetto (fai clic su File > Struttura progetto). Per saperne di più, scopri come utilizzare le funzionalità del linguaggio Java 8.

    Android Profiler

    Il nuovo Android Profiler sostituisce lo strumento Android Monitor e fornisce una nuova suite di strumenti per misurare l'utilizzo di CPU, memoria e rete della tua app in tempo reale. Puoi eseguire il tracciamento dei metodi basato su campioni per misurare il tempo di esecuzione del codice, acquisire dump dell'heap, visualizzare le allocazioni di memoria e ispezionare i dettagli dei file trasmessi in rete.

    Per aprirlo, fai clic su Visualizza > Finestre degli strumenti > Profiler Android (o fai clic su Profiler Android nella barra degli strumenti).

    La cronologia degli eventi nella parte superiore della finestra mostra eventi di tocco, pressioni dei tasti e modifiche dell'attività, in modo da avere più contesto per comprendere gli altri eventi di rendimento nella cronologia.

    Nota: anche la visualizzazione Logcat è stata spostata in una finestra separata (in precedenza si trovava all'interno di Android Monitor, che è stato rimosso).

    Nella sequenza temporale della panoramica di Android Profiler, fai clic sulle sequenze temporali CPU, MEMORIA o RETE per accedere agli strumenti di profilazione corrispondenti.

    CPU Profiler

    CPU Profiler ti aiuta ad analizzare l'utilizzo dei thread della CPU della tua app attivando una traccia della CPU campionata o strumentata. Poi, puoi risolvere i problemi di prestazioni della CPU utilizzando una serie di visualizzazioni e filtri dei dati.

    Per saperne di più, consulta la guida a CPU Profiler.

    Memory Profiler

    Memory Profiler ti aiuta a identificare perdite di memoria e churn di memoria che possono causare interruzioni, blocchi e persino arresti anomali delle app. Mostra un grafico in tempo reale dell'utilizzo della memoria della tua app, ti consente di acquisire un dump dell'heap, forzare le garbage collection e monitorare le allocazioni di memoria.

    Per saperne di più, consulta la guida a Memory Profiler.

    Network Profiler

    Network Profiler ti consente di monitorare l'attività di rete della tua app, di esaminare il payload di ciascuna richiesta di rete e di collegarti al codice che ha generato la richiesta di rete.

    Per ulteriori informazioni, consulta la guida a Network Profiler.

    Profilazione e debug degli APK

    Android Studio ora ti consente di profilare ed eseguire il debug di qualsiasi APK senza doverlo creare da un progetto Android Studio, a condizione che l'APK sia creato per abilitare il debug e tu abbia accesso ai simboli di debug e ai file sorgente.

    Per iniziare, fai clic su Profila o esegui il debug dell'APK dalla schermata di benvenuto di Android Studio. In alternativa, se hai già aperto un progetto, fai clic su File > Profilo o APK di debug dalla barra dei menu. Vengono visualizzati i file APK decompressi, ma il codice non viene decompilato. Pertanto, per aggiungere correttamente i punti di interruzione e visualizzare le analisi dello stack, devi allegare i file sorgente Java e i simboli di debug nativi.

    Per maggiori informazioni, vedi Profilare ed eseguire il debug degli APK precompilati.

    Esplora file dispositivo

    Il nuovo esploratore di file del dispositivo ti consente di esaminare il file system del dispositivo connesso e trasferire file tra il dispositivo e il computer. Questo sostituisce lo strumento del file system disponibile in DDMS.

    Per aprirlo, fai clic su Visualizza > Finestre degli strumenti > Esplora file del dispositivo.

    Per ulteriori informazioni, consulta la guida a Esplora file del dispositivo.

    Assistenza per le app istantanee

    Il nuovo supporto per Android Instant Apps ti consente di creare Instant Apps nel tuo progetto utilizzando due nuovi tipi di moduli: moduli Instant App e moduli delle funzionalità (questi richiedono l'installazione dell'SDK di sviluppo di Instant Apps).

    Android Studio include anche una nuova azione di refactoring modulare per aiutarti ad aggiungere il supporto per le app istantanee in un progetto esistente. Ad esempio, se vuoi refactoring del progetto per inserire alcune classi in un modulo delle funzionalità dell'app istantanea, seleziona le classi nella finestra Progetto e fai clic su Refactoring > Modularizza. Nella finestra di dialogo visualizzata, seleziona il modulo in cui inserire le classi e fai clic su Ok.

    Quando è tutto pronto per testare la tua app istantanea, puoi creare ed eseguire il modulo dell'app istantanea su un dispositivo connesso specificando l'URL dell'app istantanea all'interno delle opzioni di avvio della configurazione di esecuzione: seleziona Esegui > Modifica configurazioni, seleziona il modulo dell'app istantanea e imposta l'URL in Opzioni di avvio.

    Per maggiori informazioni, vedi App istantanee Android.

    Moduli Android Things

    Nuovi modelli di Android Things nelle procedure guidate Nuovo progetto e Nuovo modulo per aiutarti a iniziare a sviluppare per dispositivi IoT basati su Android.

    Per saperne di più, scopri come creare un progetto Android Things.

    Procedura guidata per le icone adattive

    Image Asset Studio ora supporta i disegni vettoriali e ti consente di creare icone in Avvio applicazioni adattive per Android 8.0, creando contemporaneamente icone tradizionali ("legacy") per i dispositivi meno recenti.

    Per iniziare, fai clic con il tasto destro del mouse sulla cartella res nel tuo progetto, quindi fai clic su Nuovo > Risorsa immagine. Nella finestra Asset Studio, seleziona Icone di avvio app (adattive e legacy) come tipo di icona.

    Nota: devi impostare compileSdkVersion su 26 o un valore superiore per utilizzare le icone di avvio adattive.

    Per saperne di più, leggi l'articolo sulle icone adattive.

    Supporto per le risorse dei caratteri

    Per supportare le nuove risorse dei caratteri in Android 8.0, Android Studio include un selettore di risorse dei caratteri per facilitare il raggruppamento dei caratteri nell'app o la configurazione del progetto per scaricare i caratteri sul dispositivo (se disponibili). L'editor di layout può anche visualizzare l'anteprima dei caratteri nel layout.

    Per provare i caratteri scaricabili, assicurati che sul tuo dispositivo o emulatore sia installata la versione 11.2.63 o successive di Google Play Services. Per ulteriori informazioni, leggi l'articolo Caratteri scaricabili.

    Firebase App Indexing Assistant

    L'assistente Firebase è stato aggiornato con un nuovo tutorial per testare l'indicizzazione delle app. Per aprire l'assistente, seleziona Strumenti > Firebase. Quindi, seleziona Indicizzazione delle app > Testa l'indicizzazione delle app.

    Il tutorial include nuovi pulsanti per testare l'indicizzazione dei contenuti pubblici e personali:

    • Nel passaggio 2, fai clic su Visualizza l'anteprima dei risultati di ricerca per verificare che i tuoi URL vengano visualizzati nei risultati della Ricerca Google.
    • Nel passaggio 3, fai clic su Controlla errori per verificare che gli oggetti indicizzabili nella tua app siano stati aggiunti all'indice dei contenuti personali.

    L'assistente per i link per app è stato aggiornato con le seguenti nuove funzionalità:

    • Aggiungi test URL per ogni mappatura URL per assicurarti che i filtri per intent gestiscano gli URL reali.

      Puoi anche definire manualmente questi test degli URL utilizzando il tag <tools:validation> descritto di seguito.

    • Crea un file Digital Asset Links con la voce dell'oggetto appropriata per supportare Google Smart Lock, e aggiungi il tag asset_statements <meta-data> corrispondente al tuo file manifest.

    URL intent-filter validator

    Android Studio ora supporta un tag speciale nel file manifest che ti consente di testare gli URL dei filtri per intent. Si tratta degli stessi tag che l'Assistente link app può creare per te.

    Per dichiarare un URL di test per un filtro per intent, aggiungi un elemento <tools:validation> insieme all'elemento <intent-filter> corrispondente. Ad esempio:

          <activity ...>
              <intent-filter>
                  ...
              </intent-filter>
              <tools:validation testUrl="https://www.example.com/recipe/1138" />
          </activity>
        
        

    Assicurati di includere anche xmlns:tools="http://schemas.android.com/tools" nel tag <manifest>.

    Se uno degli URL di test non supera la definizione del filtro per intent, viene visualizzato un errore di lint. Un errore di questo tipo ti consente comunque di creare varianti di debug, ma interromperà le build di rilascio.

    Layout Editor

    L'editor layout è stato aggiornato con una serie di miglioramenti, tra cui:

    • Nuovo layout della barra degli strumenti e nuove icone.
    • Layout aggiornato nell'albero dei componenti.
    • Inserimenti di visualizzazioni con trascinamento migliorati.
    • Nuovo riquadro degli errori sotto l'editor, che mostra tutti i problemi con suggerimenti per la correzione (se disponibili).
    • Vari miglioramenti dell'interfaccia utente per la creazione con ConstraintLayout, tra cui i seguenti:
      • Nuovo supporto per creare barriere.
      • Nuovo supporto per la creazione di gruppi: nella barra degli strumenti, seleziona Linee guida > Aggiungi gruppo (richiede ConstraintLayout 1.1.0 beta 2 o versioni successive)
      • Nuova UI per creare catene: seleziona più viste, quindi fai clic con il tasto destro del mouse e seleziona Catena.

    Layout Inspector

    L'ispettore layout include miglioramenti per semplificare il debug dei problemi relativi ai layout delle app, tra cui il raggruppamento delle proprietà in categorie comuni e una nuova funzionalità di ricerca sia nel View Tree che nel riquadro Proprietà.

    Strumento di analisi APK

    Ora puoi utilizzare APK Analyzer dalla riga di comando con lo strumento apkanalyzer.

    Lo strumento di analisi APK è stato aggiornato anche con i seguenti miglioramenti:

    • Per gli APK creati con ProGuard, puoi caricare i file di mapping ProGuard che aggiungono funzionalità al visualizzatore DEX, tra cui:
      • Nodi in grassetto per indicare che i nodi non devono essere rimossi durante la riduzione del codice.
      • Un pulsante per mostrare i nodi rimossi durante il processo di riduzione.
      • Un pulsante che ripristina i nomi originali dei nodi nella visualizzazione ad albero che sono stati offuscati da ProGuard.
    • Il visualizzatore DEX ora mostra l'impatto stimato sulle dimensioni di ogni pacchetto, classe e metodo.
    • Nuove opzioni di filtro nella parte superiore per mostrare e nascondere campi e metodi.
    • Nella visualizzazione ad albero, i nodi che sono riferimenti non definiti nel file DEX vengono visualizzati in corsivo.

    Per maggiori informazioni, vedi Analizzare la build con APK Analyzer.

    Anteprima del compilatore DEX D8

    Android Studio 3.0 include un nuovo compilatore DEX facoltativo chiamato D8. Alla fine sostituirà il compilatore DX, ma puoi attivare l'utilizzo del nuovo compilatore D8 ora.

    La compilazione DEX influisce direttamente sul tempo di compilazione, sulle dimensioni del file .dex e sulle prestazioni di runtime dell'app. Inoltre, se confrontato con l'attuale compilatore DX, il nuovo compilatore D8 compila più velocemente e genera file .dex più piccoli, pur mantenendo prestazioni di runtime dell'app uguali o migliori.

    Per provarlo, imposta quanto segue nel file gradle.properties del progetto:

    android.enableD8=true
        

    Per ulteriori informazioni, consulta il post del blog sul compilatore D8.

    Repository Maven di Google

    Android Studio ora utilizza il repository Maven di Google per impostazione predefinita anziché dipendere da Android SDK Manager per ricevere aggiornamenti per la libreria di supporto Android, Google Play Services, Firebase e altre dipendenze. In questo modo è più facile mantenere aggiornate le librerie, soprattutto quando si utilizza un sistema di integrazione continua (CI).

    Per impostazione predefinita, tutti i nuovi progetti ora includono il repository Maven di Google. Per aggiornare il tuo progetto esistente, aggiungi google() nel blocco repositories del file build.gradle di primo livello:

          allprojects {
              repositories {
                  google()
              }
          }
        
        

    Scopri di più sul repository Maven di Google qui.

    Altre modifiche

    • Il debug nativo con Android Studio non supporta più Windows a 32 bit. Abbiamo scelto di concentrarci su altre piattaforme perché pochissimi sviluppatori utilizzano questa piattaforma. Se utilizzi Windows a 32 bit e prevedi di eseguire il debug del codice nativo, devi continuare a utilizzare Android Studio 2.3.
    • È stato eseguito l'upgrade dell'IDE di base a IntelliJ 2017.1.2, che aggiunge una serie di nuove funzionalità di 2016.3 e 2017.1, come il refactoring del linguaggio Java 8, i suggerimenti per i parametri, l'evidenziazione semantica, i punti di interruzione trascinabili, i risultati istantanei nella ricerca e molto altro ancora.
    • Sono stati aggiunti molti nuovi controlli lint.
    • Consulta anche gli ultimi aggiornamenti dell'emulatore Android.

    2.3 (marzo 2017)

    Android Studio 2.3.0 è principalmente una release di correzione di bug e stabilità, ma include anche una serie di nuove funzionalità.

    2.3.3 (giugno 2017)

    Si tratta di un aggiornamento secondario per aggiungere il supporto di Android O (livello API 26).

    2.3.2 (aprile 2017)

    Si tratta di un aggiornamento minore di Android Studio 2.3 per le seguenti modifiche:

    • Aggiornamenti di AVD Manager per supportare Google Play nelle immagini di sistema.
    • Correzioni di bug per le build NDK quando si utilizza la versione R14 o successive dell'NDK.

    Vedi anche gli aggiornamenti corrispondenti per Android Emulator 26.0.3.

    2.3.1 (aprile 2017)

    Si tratta di un aggiornamento secondario di Android Studio 2.3 che risolve un problema a causa del quale alcuni dispositivi Android fisici non funzionavano correttamente con Instant Run (vedi problema #235879).

    <h3 class="hide-from-toc">
      New
    </h3>
    
    <div class="video-wrapper-left">
      <iframe class="devsite-embedded-youtube-video" data-video-id="VFyKclKBGf0"
              data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
      </iframe>
    </div>
    
    <ul>
      <li>Android Studio can now convert PNG, BMP, JPG, and static GIF files to
      WebP format. WebP is an image file format from Google that provides lossy
      compression (like JPEG) as well as transparency (like PNG) but can provide
      better compression than either JPEG or PNG. For more information, see
        <a href="/studio/write/convert-webp.html">Convert images to WebP in Android
        Studio</a>.
      </li>
    
      <li>The new <a href="/studio/write/app-link-indexing.html">App Links
      Assistant</a> simplifies the process of adding Android App Links to your app
      into a step-by-step wizard. Android App Links are HTTP URLs that bring users
      directly to specific content in your Android app.
      </li>
    
      <li>The Layout Editor now includes support for two new ConstraintLayout
      features:
        <ul>
          <li>Define a view size based on an aspect ratio.
          </li>
          <li>Create packed, spread, and weighted linear groups with constraint
          chains.
          </li>
        </ul>
        For more information, see <a href=
        "/training/constraint-layout/index.html">Build a Responsive UI with
        ConstraintLayout</a>.
      </li>
    
      <li>The Layout Editor also now lets you create a list of <a href=
      "/studio/write/layout-editor.html#edit-properties">favorite attributes</a> so
      you don't have to click <b>View all attributes</b> to access the attributes
      you use most.
      </li>
    
      <li>When adding a material icon using the Vector Import Dialog (<b>File &gt;
      New &gt; Vector Asset</b>), you can now filter the list of available icons by
      category or by icon name. For more information, see <a href=
      "/studio/write/vector-asset-studio.html#materialicon">Adding a material
      icon</a>.
      </li>
    
      <li>
        <a href="/studio/write/annotations.html#accessibility">New and updated
        annotations</a>. The new <code>@RestrictTo</code> annotation for methods,
        classes, and packages lets you restrict an API. The updated
        <code>@VisibleForTesting</code> annotation now has an optional
        <code>otherwise</code> argument that lets you designate what the visibility
        of a method should be if not for the need to make it visible for testing.
        Lint uses the <code>otherwise</code> option to enforce the intended
        visibility of the method.
      </li>
    
      <li>New <a href="/studio/write/lint.html#snapshot">lint baseline support</a>
      allows you to use a snapshot of your project's current set of warnings as a
      baseline for future inspection runs so only new issues are reported. The
      baseline snapshot lets you start using lint to fail the build for new issues
      without having to go back and address all existing issues first.
      </li>
    
      <li>New lint checks, including the following:
        <ul>
          <li>Obsolete <code>SDK_INT</code> Checks: Android Studio removes obsolete
          code that checks for SDK versions.
          </li>
          <li>Object Animator Validation: Lint analyzes your code to make sure that
          your <code>ObjectAnimator</code> calls reference valid methods with the
          right signatures and checks that those methods are annotated with <code>
            @Keep</code> to prevent ProGuard from renaming or removing them during
            release builds.
          </li>
          <li>Unnecessary Item Decorator Copy: Older versions of the
          <code>RecyclerView</code> library did not include a divider decorator
          class, but one was provided as a sample in the support demos. Recent
          versions of the library have a divider decorator class. Lint looks for
          the old sample and suggests replacing it with the new one.
          </li>
          <li>WifiManager Leak: Prior to Android 7.0 (API level 24), initializing
          the <code>WifiManager</code> with <code><a href="/reference/android/content/Context.html#getSystemService(java.lang.Class&lt;T&gt;)">Context.getSystemService()</a></code>
          can cause a memory leak if the context is not the application context.
          Lint looks for these initializations, and if it <em>cannot</em> determine
          that the context is the application context, it suggests you use <code><a href="/reference/android/content/Context.html#getApplicationContext()">Context.getApplicationContext()</a></code> to get the proper context for the
          initialization.
          </li>
          <li>Improved Resource Prefix: The existing <code>resourcePrefix</code>
          lint check had many limitations. You can now configure your project with
          a prefix, such as <code>android { resourcePrefix '<var>my_lib</var>'
          }</code>, and lint makes sure that all of your resources are using this
          prefix. You can use variations of the name for styles and themes. For
          example for the <var>my_lib</var> prefix, you can have themes named
          <code>MyLibTheme</code>, <code>myLibAttr</code>,
          <code>my_lib_layout</code>, and so on.
          </li>
          <li>Switch to WebP: This check identifies images in your project that can
          be converted to WebP format based on your projects
          <code>minSdkVersion</code> setting. An associated quickfix can
          automatically convert the images, or you can <a href=
          "/studio/write/convert-webp.html">convert images to WebP</a> manually.
          </li>
          <li>Unsafe WebP: If your project already includes WebP images, this check
          analyzes your project to ensure that your <code>minSdkVersion</code>
          setting is high enough to support the included images. For more
          information about WebP support in Android and Android Studio, see
          <a class="external" href=
          "https://developers.google.com/speed/webp/faq#which_web_browsers_natively_support_webp">
            Which browsers natively support WebP?</a> and <a href=
            "/studio/write/convert-webp.html">Create WebP Images Using Android
            Studio</a>.
          </li>
        </ul>
      </li>
    </ul>
    
    <h3 class="hide-from-toc">
      Changes
    </h3>
    
    <ul>
      <li>A separate button to push changes with Instant Run: After deploying your
      app, you now click <b>Apply Changes</b> <img src=
      "/studio/images/buttons/toolbar-apply-changes.svg" alt="" class=
      "inline-icon"> to quickly push incremental changes to your running app using
      Instant Run. The <b>Run</b> <img src="/studio/images/buttons/toolbar-run.png"
        alt="" class="inline-icon"> and <b>Debug</b> <img src=
        "/studio/images/buttons/toolbar-debug.png" alt="" class="inline-icon">
        buttons are always available to you when you want to reliably push your
        changes and force an app restart.
        <ul>
          <li>Instant Run is supported only when deploying your app to a target
          device running Android 5.0 (API level 21) or higher.
          </li>
          <li>Instant Run is no longer disabled for projects that <a href=
          "/studio/projects/add-native-code.html">link to external native
          projects</a> using CMake or ndk-build. However, you can only use Instant
          Run to push incremental changes to your Java code, not your native code.
          </li>
          <li>Cold swaps (which you can force for a running app by clicking
          <strong>Run</strong> <img src="/studio/images/buttons/toolbar-run.png"
          alt="" class="inline-icon">) are now more reliable. Forcing a cold swap
          also fixes the issue where changes to notification and widget UIs were
          not updated on the target device.
          </li>
          <li>Includes optimizations that make app startup much faster. These
          optimizations may affect profiling, so you should temporarily <a href=
          "/studio/run/index.html#disable-ir">disable Instant Run</a> whenever
          profiling your app.
          </li>
        </ul>
      </li>
    
      <li>
        <p>
          The <b>AVD Manager</b> <img src=
          "/studio/images/buttons/toolbar-avd-manager.png" alt="" class=
          "inline-icon"> and <b>SDK Manager</b> <img src=
          "/studio/images/buttons/toolbar-sdk-manager.png" alt="" class=
          "inline-icon"> buttons are now included in the lean Navigation Bar as
          well as the full Toolbar. To use the lean Navigation Bar, click
          <b>View</b> to open the View menu, then ensure that <b>Navigation Bar</b>
          is selected and <b>Toolbar</b> is <em>not</em> selected.
        </p>
        <img src="/studio/images/releases/navigationbar_sdkavd_2x.png" width="757">
      </li>
    
      <li>The "Hybrid" debugger has been renamed to "Dual" debugger.
      </li>
    
      <li>In the <a href="/studio/run/rundebugconfig.html">Run/Debug
      Configurations</a> dialog, under Defaults in the left pane, the following run
      configuration names have changed with no behavior changes:
        <ul>
          <li>The JUnit name has changed to Android JUnit. If you have a project
          that uses JUnit run configurations, those configurations are transformed
          to Android JUnit run configurations the first time you open the project
          with Android Studio. A dialog appears to inform you of the name change.
          </li>
          <li>The Android Tests name has changed to Android Instrumented Tests.
          </li>
        </ul>
      </li>
    
      <li>The <a href="/studio/debug/am-gpu-debugger.html">GPU Debugger</a> has
      been removed from Android Studio as of version 2.3. An open-source,
      standalone version of the tool is now available on <a href=
      "https://github.com/google/gapid" class="external-link">GitHub</a>.
      </li>
    
      <li>The Run/Debug option is no longer available when you right-click a <code>
        *.gradle build</code> script.
      </li>
    
      <li>All templates now use <code>ConstraintLayout</code> as the default
      layout.
      </li>
    
      <li>The Widgets palette in the Layout Editor has been redesigned.
      </li>
    </ul>
    
    <p>
      This release also includes a number of bug fixes. <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.3+status%3DReleased&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.3.0.</a>
    </p>
    
    <p class="note">
      <b>Known issue:</b> Some device manufacturers block apps from automatically
      launching after being installed on the device. When deploying your app to a
      physical device using Android Studio 2.3, this restriction breaks the
      intended behavior of Instant Run and causes the following error output:
      <code>Error: Not found; no service started</code>. To avoid this issue,
      either <a href="/studio/run/emulator.html">use the emulator</a> or enable
      automatic launching for your app in your device's settings. The procedure
      for doing this is different for each device, so check the instructions
      provided by the manufacturer. To learn more about this issue, see
      <a href="https://code.google.com/p/android/issues/detail?id=235879">Issue
        #235879</a>.
    </p>
    

    2.2 (settembre 2016)

    2.2.3 (dicembre 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes a bug fixes
      focused around gradle, the core IDE, and lint.
    </p>
    
    <p>
      Highlighted build changes:
    </p>
    
    <ul>
      <li>ProGuard version rollback. Due to a <a href=
      "https://sourceforge.net/p/proguard/bugs/625/">correctness issue</a>
      discovered in ProGuard 5.3.1, we have rolled back to ProGuard 5.2.1. We
      have worked with the ProGuard team on getting a fix quickly, and we expect
      to roll forward to ProGuard 5.3.2 in Android Studio 2.3 Canary 3.
      </li>
      <li>Bug fix for <code>aaptOptions</code> <code>IgnoreAssetsPattern</code>
      not working properly (<a href="http://b.android.com/224167">issue
      224167</a>)
      </li>
      <li>Bug fix for Gradle autodownload for Constraint Layout library
        (<a href="https://code.google.com/p/android/issues/detail?id=212128">issue
        212128</a>)
      </li>
      <li>Bug fix for a JDK8/Kotlin compiler + dx issue (<a href=
      "http://b.android.com/227729">issue 227729</a>)
      </li>
    </ul>
    
    <p>
      <a href=
      "https://code.google.com/p/android/issues/list?can=1&amp;q=target%3D2.2.3+status%3AReleased+&amp;colspec=ID+Status+Priority+Owner+Summary+Stars+Reporter+Opened&amp;cells=tiles">
      See all bug fixes in 2.2.3</a>.
    </p>
    

    2.2.2 (ottobre 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes a number of small
      changes and bug fixes, including:
    </p>
    
    <ul>
      <li>When reporting Instant Run issues through the IDE, the report now also
      includes logcat output for <code>InstantRun</code> events. To help us
      improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
      </li>
      <li>A number of small bug fixes for Gradle.
      </li>
      <li>A fix for problems with generating multiple APKs.
      </li>
    </ul>
    

    2.2.1 (ottobre 2016)

    <p>
      This is a minor update to Android Studio 2.2. It includes several bug fixes
      and a new feature to enable extra logging to help us troubleshoot Instant
      Run issues—to help us improve Instant Run, please <a href=
      "/studio/run/index.html#submit-feedback">enable extra logging and report
      any issues</a>.
    </p>
    

    Novità

    • Editor layout completamente nuovo con strumenti creati appositamente per supportare ConstraintLayout.
    • <li>New <strong><a href=
      "http://tools.android.com/tech-docs/layout-inspector">Layout
      Inspector</a></strong> lets you examine snapshots of your layout hierarchy
      while your app is running on the emulator or a device.
      </li>
      
      <li>New <strong><a href="/studio/write/firebase.html">Assistant</a></strong>
      window to help you integrate Firebase services into your app.
      </li>
      
      <li>New <strong><a href="/studio/debug/apk-analyzer.html">APK
      Analyzer</a></strong> tool so you can inspect the contents of your packaged
      app.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/test-recorder">Espresso Test
      Recorder</a></strong> tool (currently in beta) to help you create UI tests by
      recording your own interactions.
      </li>
      
      <li>New <strong><a href=
      "http://tools.android.com/tech-docs/build-cache">build cache</a></strong>
      (currently experimental) to speed up build performance.
      </li>
      
      <li>New <strong>C/C++ build integration with CMake and ndk-build</strong>.
      Compile and build new or existing native code into libraries packaged into
      your APK, and debug using lldb. For new projects, Android Studio uses CMake
      by default, but also supports ndk-build for existing projects. To learn how
      to include native code in your Android application, read <a href=
      "/studio/projects/add-native-code.html">Add C and C++ Code to Your
      Project</a>. To learn how to debug native code with lldb, see <a href=
      "/studio/debug/index.html#debug-native">Debug Native Code</a>.
      </li>
      
      <li>New <strong><a href="/studio/intro/index.html#sample-code">Samples
      Browser</a></strong> so you can easily look up Google Android sample code
      from within Android Studio to jump start app development.
      </li>
      
      <li>New <strong>Merged Manifest Viewer</strong> to help you diagnose how your
      manifest file merges with your app dependencies across project build
      variants.
      </li>
      
      <li>The <strong>Run</strong> window now contains log messages for the current
      running app. Note that you can configure the <a href=
      "/studio/debug/am-logcat.html">logcat Monitor</a> display, but not the
      <strong>Run</strong> window.
      </li>
      
      <li>New <strong><a href="/studio/run/emulator.html">Android
      Emulator</a></strong> features:
        <ul>
          <li>Added new <strong>Virtual</strong> <strong>Sensors</strong> and
          <strong>Cellular</strong> &gt; <strong>Signal Strength</strong> controls.
          </li>
          <li>Added an <strong>LTE</strong> option to the <strong>Cellular</strong>
          &gt; <strong>Network type</strong> control.
          </li>
          <li>Added simulated vertical swipes for scrolling through vertical menus
          with a mouse wheel.
          </li>
        </ul>
      </li>
      
      <li>New <strong><a href="/studio/run/rundebugconfig.html">Run/Debug
      Configuration</a></strong> features:
        <ul>
          <li>The <strong>Debugger</strong> tab of the Android App and Android
          Tests templates now contain several new options for debugging with LLDB.
          </li>
          <li>The <strong>Profiling</strong> tab of the Android App and Android
          Tests templates now contain a <strong>Capture GPU Commands</strong>
          option for enabling GPU tracing. You can display GPU traces in the GPU
          Debugger (a beta feature).
          </li>
          <li>The Android Tests template now has a <strong>Firebase Test Lab Device
          Matrix</strong> option for the <strong>Deployment Target</strong>.
          </li>
          <li>The Native Application template has been deprecated. If you use this
          template in a project, Android Studio automatically converts it to the
          Android App template.
          </li>
          <li>The Android Application template has been renamed to Android App.
          </li>
        </ul>
      </li>
      
      <li>Improved installation, configuration, performance, and UI features in the
      <strong><a href="/studio/debug/am-gpu-debugger.html">GPU
      Debugger</a></strong> (currently in beta).
      </li>
      
      <li>Android Studio now comes bundled with <strong>OpenJDK 8</strong>.
      Existing projects still use the JDK specified in <strong>File &gt; Project
      Structure &gt; SDK Location</strong>. You can switch to use the new bundled
      JDK by clicking <strong>File &gt; Project Structure &gt; SDK
      Location</strong> and checking the <strong>Use embedded JDK</strong>
      checkbox.
      </li>
      
      <li>Added new <strong>help menus and buttons</strong> in the UI so you can
      more easily find the online documentation.
      </li>
      

    Modifiche

    • È stato aggiornato il codebase dell'IDE da IntelliJ 15 a IntelliJ 2016.1
    • Ora Instant Run richiede l'installazione dell'SDK della piattaforma corrispondente al livello API del dispositivo di destinazione.
    • Instant Run verrà disattivato automaticamente se l'utente esegue l'app in un profilo di lavoro o come utente secondario.
    • Sono stati risolti molti problemi di affidabilità per Instant Run in cui le modifiche non venivano implementate o l'app si arrestava in modo anomalo:
      • Alcuni asset dell'app non sono stati implementati nell'app in esecuzione. ( Bug: #213454)
      • L'app si arresta in modo anomalo quando l'utente passa da sessioni Instant Run a sessioni non Instant Run in cui una classe serializzabile non ha serialVersionUID definito. (Bug: #209006)
      • Le modifiche allo stile non vengono applicate con Instant Run. (Bug: #210851)
      • La sessione Instant Run non è affidabile e causa FileNotFoundException. (Bug: #213083)
      • Modifiche alle risorse grafiche non riflesse fino all'esecuzione della ricompilazione completa per KitKat. (Bug: #21530)
      • Le modifiche alle risorse non vengono riflesse con l'esecuzione istantanea quando i set di origini personalizzati contengono percorsi nidificati. (Bug: #219145)
      • Lo scambio a caldo e a freddo non funziona se la classe modificata contiene un'annotazione con un valore enum. (Bug: #209047)
      • Modifiche ai dati di annotazione non applicate con Esecuzione istantanea. (Bug: #210089)
      • Instant Run non rileva le modifiche al codice se le apporti al di fuori dell'IDE. (Bug: #213205)
      • La sessione Instant Run non è affidabile a causa di un token di sicurezza non corrispondente. (Bug: #211989
      • Lo scambio a freddo non riesce per i dispositivi che non supportano correttamente l'esecuzione come. (Bug: #210875)
      • Arresto anomalo dell'app dopo il riavvio di Instant Run. (Bug: #219744)
      • ClassNotFoundException osservata durante il passaggio da Instant Run a Instant Debug. (Bug: #215805)
    • <li>Improved performance for <strong>Gradle sync</strong> within the IDE,
      especially for large projects.
      </li>
      
      <li>Improved build times for both full and incremental builds with new app
      packaging code.
      </li>
      
      <li>Improved <strong>Jack compiler performance and features</strong>,
      including support for annotation processors and dexing in process. To learn
      more, read the <a href=
      "/studio/releases/gradle-plugin.html#revisions">Android plugin for Gradle
      2.2.0 release notes</a>.
      </li>
      
      <li>Removed the <strong>Scale</strong> AVD property from the AVD Manager.
      </li>
      
      <li>The Android Emulator <strong>-port</strong> and <strong>-ports</strong>
      command-line options now report which ports and serial number the emulator
      instance is using, and warn if there are any issues with the values you
      provided.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/create-java-class.html">Create New Class dialog</a></strong>
      and the corresponding file templates. <strong>Note:</strong> If you've
      previously customized the <strong>AnnotationType</strong>,
      <strong>Class</strong>, <strong>Enum</strong>, <strong>Interface</strong>, or
      <strong>Singleton</strong> file templates, you need to modify your templates
      to comply with the new templates or you wont be able to use the new fields
      in the <strong>Create New Class</strong> dialog.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/vector-asset-studio.html">Vector Asset Studio</a></strong>
      user interface and added support for Adobe Photoshop Document (PSD) files.
      </li>
      
      <li>Improved the <strong><a href=
      "/studio/write/image-asset-studio.html">Image Asset Studio</a></strong> user
      interface.
      </li>
      
      <li>Improved the <strong>Theme Editor</strong>'s Resource Picker.
      </li>
      
      <li>Fixed memory leaks and reduced overall memory usage in Android Studio.
      </li>
      
      <li>Added a <strong>Background</strong> button in the <strong><a href=
      "/studio/intro/update.html#sdk-manager">SDK Manager</a></strong> so you can
      get back to work and install your packages in the background.
      </li>
      
      <li>Improved <strong><a href="/studio/intro/accessibility.html">Accessibility
      features</a></strong>, including support for screen readers and keyboard
      navigation.
      </li>
      
      <li>Enhanced <strong>Code Analysis</strong> includes code quality checks for
      Java 8 language usage and more cross-file analysis.
      </li>
      
      <li>Several toolbar icons have changed.
      </li>
      

    2.1 (aprile 2016)

    Le modifiche principali di questo aggiornamento forniscono supporto per lo sviluppo con Android N Preview.

    2.1.3 (agosto 2016)

    Questo aggiornamento aggiunge la compatibilità con Gradle 2.14.1, che include miglioramenti delle prestazioni, nuove funzionalità e una correzione di sicurezza importante. Per maggiori dettagli, consulta le note di rilascio di Gradle.

    Per impostazione predefinita, i nuovi progetti in Android Studio 2.1.3 utilizzano Gradle 2.14.1. Per i progetti esistenti, l'IDE ti chiede di eseguire l'upgrade a Gradle 2.14.1 e al plug-in Android per Gradle 2.1.3, necessario quando utilizzi Gradle 2.14.1 e versioni successive.

    2.1.2 (giugno 2016)

    Questo aggiornamento include una serie di piccole modifiche e correzioni di bug:

    • Aggiornamenti e correzioni di bug di Instant Run.
    • Miglioramenti delle prestazioni di LLDB e delle notifiche di arresto anomalo.
    • È stata corretta una regressione nell'aggiornamento della sicurezza di Android Studio 2.1.1 che causava l'errore git rebase.

    2.1.1 (maggio 2016)

    Aggiornamento della release di sicurezza.

    La piattaforma Android N aggiunge il supporto per le funzionalità del linguaggio Java 8, che richiedono un nuovo compilatore sperimentale chiamato Jack. L'ultima versione di Jack è attualmente supportata solo in Android Studio 2.1. Pertanto, se vuoi utilizzare le funzionalità del linguaggio Java 8, devi utilizzare Android Studio 2.1 per creare la tua app.

    Nota:Instant Run è disattivato quando attivi il compilatore Jack perché al momento non sono compatibili.

    Sebbene Android Studio 2.1 sia ora stabile, il compilatore Jack è ancora sperimentale e devi attivarlo con la proprietà jackOptions nel file build.gradle.

    Oltre alle modifiche per supportare l'anteprima N, Android Studio 2.1 include correzioni di bug secondari e i seguenti miglioramenti:

    • Il debugger C++ compatibile con Java è ora attivato per impostazione predefinita quando utilizzi un dispositivo o un emulatore N e selezioni la modalità di debug Nativa (nella scheda Debugger per la configurazione di esecuzione/debug).

    Per altri miglioramenti della build, tra cui la compilazione Java incrementale e il dexing in-process,aggiorna il plug-in Android per Gradle alla versione 2.1.0.

    2.0 (aprile 2016)

    Nota: se stai sviluppando per l'anteprima per gli sviluppatori N, devi utilizzare Android Studio 2.1 Preview. Android Studio 2.0 non supporta tutte le funzionalità necessarie per il targeting della versione di anteprima N.

    Esecuzione istantanea:

    • Android Studio ora esegue il deployment di build pulite più velocemente che mai. Inoltre, il push delle modifiche incrementali del codice sull'emulatore o su un dispositivo fisico è ora quasi istantaneo. Rivedi gli aggiornamenti senza eseguire nuovamente il deployment di una nuova build di debug o, in molti casi, senza riavviare l'app.
    • Instant Run supporta il push delle seguenti modifiche a un'app in esecuzione:
      • Modifiche all'implementazione di un metodo di istanza esistente o statico
      • Modifiche a una risorsa per app esistente
      • Modifiche al codice strutturale, ad esempio una firma del metodo o un campo statico (richiede un dispositivo di destinazione con livello API 21 o superiore).
    • Leggi la documentazione per scoprire di più su Instant Run.

      Nota:Instant Run è supportato solo quando esegui il deployment della variante di build di debug, utilizzi Android Plugin for Gradle versione 2.0.0 o successive e configuri il file build.gradle a livello di modulo dell'app per minSdkVersion 15 o versioni successive. Per ottenere il miglior rendimento, configura la tua app per minSdkVersion 21 o versioni successive.

    Novità di Lint:

    • Ispezione delle istruzioni switch utilizzando numeri interi annotati @IntDef per assicurarsi che tutte le costanti vengano gestite. Per aggiungere rapidamente le istruzioni mancanti, utilizza il menu a discesa dell'azione di intent e seleziona Aggiungi costanti @IntDef mancanti.
    • Segnala i tentativi errati di utilizzare l'interpolazione di stringhe per inserire i numeri di versione nel file build.gradle.
    • Flag per le classi anonime che estendono la classe Fragment.
    • Flag per il codice nativo in posizioni non sicure, ad esempio le cartelle res/ e asset/. Questo flag incoraggia l'archiviazione del codice nativo nella cartella libs/, che viene poi pacchettizzata in modo sicuro nella cartella data/app-lib/ dell'applicazione al momento dell'installazione. AOSP: #169950
    • Segnalazioni per chiamate non sicure a Runtime.load() e System.load(). AOSP: #179980
    • Trova e rimuovi le risorse inutilizzate selezionando Refactor > Remove Unused Resources (Rimodella > Rimuovi risorse inutilizzate) dalla barra dei menu. Il rilevamento delle risorse inutilizzate ora supporta le risorse a cui viene fatto riferimento solo da risorse inutilizzate, i riferimenti nei file non elaborati, come i riferimenti alle immagini .html, e gli attributi tools:keep e tools:discard utilizzati dal riduttore di risorse Gradle, tenendo conto dei set di origini inattivi (come le risorse utilizzate in altri flavor di build) e gestendo correttamente le importazioni di campi statici.
    • Verifica che i riferimenti API impliciti siano supportati su tutte le piattaforme di destinazione di minSdkVersion.
    • Segnala l'utilizzo improprio di RecyclerView e Parcelable.
    • Ora vengono controllati anche gli avvisi @IntDef, @IntRange e @Size per array int e varargs.

    Ulteriori miglioramenti:

    • Ottimizzato per Android Emulator 2.0, che è più veloce che mai, supporta una gamma più ampia di dispositivi virtuali e presenta un'interfaccia utente notevolmente migliorata. Per saperne di più sul nuovo emulatore, leggi le note di rilascio di SDK Tools.
    • Miglioramenti a Android Virtual Device Manager:
      • Le immagini di sistema ora sono classificate nelle seguenti schede: Consigliate, x86 e Altro.
      • Nelle impostazioni avanzate, puoi attivare il supporto multicore e specificare il numero di core che l'emulatore può utilizzare.
      • Nelle impostazioni avanzate, puoi determinare il rendering della grafica nell'emulatore selezionando una delle seguenti opzioni:
        • Hardware:utilizza la scheda grafica del computer per un rendering più rapido.
        • Software:utilizza il rendering basato su software.
        • Automatico:lascia che l'emulatore decida l'opzione migliore. Questa è l'impostazione predefinita.
    • Tempi di creazione dei pacchetti AAPT migliorati specificando la destinazione di deployment prima della creazione dell'app. In questo modo, Android Studio può comprimere in modo efficiente solo le risorse richieste dal dispositivo specificato.
    • È stata aggiunta l'integrazione di Cloud Test Lab per fornire test delle app on demand con la praticità e la scalabilità di un servizio cloud. Scopri di più su come utilizzare Cloud Test Lab con Android Studio.
    • È stata aggiunta un'anteprima del nuovo debugger GPU. Per le applicazioni che richiedono un uso intensivo della grafica, ora puoi esaminare visivamente il codice OpenGL ES per ottimizzare l'app o il gioco.
    • È stato aggiunto il test di indicizzazione delle app Google. Aggiungi il supporto per URL, indicizzazione delle app e funzionalità di ricerca alle tue app per aumentare il traffico verso la tua app, scoprire quali contenuti dell'app vengono utilizzati di più e attirare nuovi utenti. Testa e convalida gli URL nella tua app in Android Studio. Consulta URL e indicizzazione delle app supportati in Android Studio.
    • Aggiornamenti dall'ultima release di IntelliJ 15, tra cui analisi del codice e prestazioni migliorate. Consulta la sezione Novità di IntelliJ per una descrizione completa delle nuove funzionalità e dei miglioramenti.
    • Il completamento automatico dell'editor XML ora aggiunge le virgolette al completamento degli attributi. Per verificare se questa opzione è attivata, apri la finestra di dialogo Impostazioni o Preferenze, vai a Editor > Generale > Tasti intelligenti e seleziona la casella accanto a Aggiungi virgolette per il valore dell'attributo al completamento dell'attributo. Problema: 195113
    • L'editor XML ora supporta il completamento del codice per le espressioni di data binding.

    Android Studio v1.5.1 (dicembre 2015)

    Correzioni e miglioramenti:

    • È stato risolto un problema di rendering non riuscito nell'editor di layout. Problema: 194612
    • È stata aggiunta la possibilità di variare gli attributi del file manifest description in base alla configurazione. Problema: 194705
    • È stato migliorato il contrasto del tema dell'aspetto Darcula di Android Studio in Vector Asset Studio. Problema: 191819
    • È stato aggiunto il supporto del pulsante Guida a Vector Asset Studio.
    • È stato aggiunto il supporto dell'operatore % per l'associazione di dati. Problema: 194045
    • È stato risolto un problema per cui l'avvio di un'app per il debug comportava la connessione del debugger al dispositivo sbagliato. Problema: 195167
    • È stata corretta un'eccezione di puntatore nullo che poteva verificarsi durante il tentativo di eseguire un'app in determinati scenari.

    Android Studio v1.5.0 (novembre 2015)

    Correzioni e miglioramenti:

    • Sono state aggiunte nuove funzionalità di analisi di Memory Monitor ad Android Monitor. Quando visualizzi un file HPROF acquisito da questo monitor, la visualizzazione è ora più utile per individuare più rapidamente problemi, come le perdite di memoria. Per utilizzare questo monitor, fai clic su Android Monitor in fondo alla finestra principale. In Android Monitor, fai clic sulla scheda Memoria. Mentre il monitor è in esecuzione, fai clic sull'icona Dump Java Heap, poi su Acquisizioni nella finestra principale e fai doppio clic sul file per visualizzarlo. Fai clic su Analisi acquisizione a destra. (Android Device Monitor non può essere eseguito contemporaneamente ad Android Monitor.)
    • È stato aggiunto il supporto per nuovi link diretti e link per app. L'editor di codice può creare automaticamente un filtro per intent per il deep link nel file AndroidManifest.xml. Può anche generare codice per aiutarti a eseguire l'integrazione con l'API App Indexing in un'attività in un file Java. Una funzionalità di test dei link diretti ti aiuta a verificare che un link diretto specificato possa avviare un'app. Nella scheda Generale della finestra di dialogo Configurazioni di esecuzione/debug, puoi specificare le opzioni di avvio dei link diretti. Puoi anche testare le chiamate API Indexing in un'attività utilizzando la visualizzazione logcat di Android Monitor. Lo strumento Android lint ora mostra avvisi per determinati problemi relativi ai link diretti e all'API Indexing.
    • È stata aggiunta la possibilità di utilizzare nomi brevi durante il completamento automatico delle visualizzazioni personalizzate nell'editor di codice.
    • È stato aggiunto il supporto di altri elementi VectorDrawable a Vector Asset Studio per la compatibilità con le versioni precedenti. Vector Asset Studio può utilizzare questi elementi per convertire le risorse disegnabili vettoriali in immagini raster PNG da utilizzare con Android 4.4 (livello API 20) e versioni precedenti.
    • Sono stati aggiunti nuovi controlli lint per Android TV e Android Auto per fornirti feedback immediati e utili in Android Studio, insieme a diverse correzioni rapide. Ad esempio, per Android TV, può segnalare e fornire una correzione rapida per problemi relativi a permessi, hardware non supportato, elemento uses-feature e banner mancanti. Per Android Auto, può convalidare l'utilizzo corretto nel file descrittore a cui fa riferimento il tuo file AndroidManifest.xml, segnalare se non è presente un filtro per intent per la classe MediaBrowserService e identificare determinati problemi relativi ai comandi vocali.
    • Sono stati aggiunti nuovi controlli lint per i ricevitori di trasmissione non sicuri, gli utilizzi delle classi SSLCertificateSocketFactory e HostnameVerifier e le chiamate File.setReadable() e File.setWritable(). Rileva anche le ricerche di risorse manifest non valide, in particolare per le risorse che variano in base alla configurazione.
    • Sono stati corretti diversi problemi di stabilità.

    Android Studio v1.4.1 (ottobre 2015)

    Correzioni e miglioramenti:

    • È stato risolto un problema di memorizzazione nella cache del modello Gradle che poteva causare un'eccessiva sincronizzazione di Gradle al riavvio dell'IDE.
    • È stato risolto un problema di deadlock di debug nativo.
    • Risolto un problema che bloccava gli utenti del sistema di controllo delle versioni Subversion 1.9.
    • È stato risolto un problema della finestra di dialogo Selettore dispositivi per cui, dopo aver connesso un dispositivo non autorizzato, non era più possibile selezionare l'emulatore. Problema: 189658
    • È stata corretta la segnalazione di errori di traduzione errati per le impostazioni internazionali che hanno un qualificatore di regione e una traduzione nella regione (ma non nelle impostazioni internazionali di base). Problema: 188577
    • È stato risolto un problema di deadlock nell'editor di temi correlato alla sua interazione con l'editor di layout. Problema: 188070
    • È stato risolto un conflitto di ricaricamento e modifica dell'editor di temi che impediva l'aggiornamento corretto degli attributi. Problema: 187726
    • Prestazioni dell'editor di temi migliorate.
    • Risolto un problema per cui l'attributo android:required veniva ignorato nel manifest. Problema: 187665

    Android Studio v1.4.0 (settembre 2015)

    Correzioni e miglioramenti:

    • È stato aggiunto lo strumento Vector Asset Studio per importare grafiche vettoriali, come icone Material e file SVG. Per utilizzare questo strumento, nella visualizzazione Android della finestra Progetto, fai clic con il tasto destro del mouse sulla cartella res e seleziona Nuovo > Asset vettoriale.
    • Sono state aggiunte nuove funzioni di monitoraggio Android, GPU e rete. Per utilizzare questi monitor, fai clic su Monitor Android nella parte inferiore della finestra principale. Android Device Monitor non può essere eseguito contemporaneamente ad Android Monitor.
    • È stata aggiunta un'anteprima della nuova funzionalità Editor di temi. Per utilizzare questa funzionalità, seleziona Strumenti > Android > Editor di temi.
    • Aggiornamento dei modelli Android per la libreria di supporto della progettazione. I modelli ora includono il supporto per la specifica Material Design, nonché la libreria di supporto appcompat per la compatibilità con le versioni precedenti.

    Android Studio v1.3.2 (agosto 2015)

    Correzioni e miglioramenti:

    • È stato aggiunto il supporto per Android 6.0 (livello API 23), incluse nuove icone e il supporto di AVD Manager per la creazione di dispositivi con nuove densità dello schermo.
    • È stata corretta un'eccezione che si verificava durante i controlli degli aggiornamenti. Problema: 183068
    • È stato risolto il problema per cui le coordinate della visualizzazione non risolte potevano causare l'arresto anomalo dell'editor layout. Problema: 178690
    • È stato risolto il problema relativo agli avvisi sul tipo di risorsa non valido. Problema: 182433
    • È stato corretto il controllo lint che segnalava erroneamente le risorse come private. Problema: 183120

    Android Studio v1.3.1 (agosto 2015)

    Correzioni e miglioramenti:

    • È stato corretto il supporto per la creazione di un dispositivo virtuale Android (AVD) Android Wear su Windows.
    • È stato aggiornato l'Assistente progetto per utilizzare il nome del progetto inserito.
    • È stato aggiunto il supporto per consentire l'archiviazione dell'SDK Android in una directory di sola lettura.
    • È stato aggiornato il plug-in Android per Gradle alla versione 1.3.0.
    • Sono stati risolti i problemi relativi all'avvio di una sessione di debug dalla shell Unix di Android Debug Bridge (adb).
    • È stato corretto il messaggio di ridenominazione del pacchetto Java per mostrare il nome del pacchetto corretto.

    Android Studio v1.3.0 (luglio 2015)

    Correzioni e miglioramenti:

    • Sono state aggiunte opzioni per attivare i servizi per sviluppatori, come Google AdMob e Analytics, nella tua app da Android Studio.
    • Sono state aggiunte annotazioni aggiuntive, come @RequiresPermission, @CheckResults e @MainThread.
    • È stata aggiunta la funzionalità per generare dump dell'heap Java e analizzare le allocazioni dei thread da Monitoraggio memoria. Puoi anche convertire i file in formato binario HPROF specifico per Android nel formato HPROF standard da Android Studio.
    • È stato integrato SDK Manager in Android Studio per semplificare l'accesso a pacchetti e strumenti e fornire notifiche di aggiornamento.

      Nota:SDK Manager autonomo è ancora disponibile dalla riga di comando, ma è consigliato solo per l'utilizzo con installazioni SDK autonome.

    • È stato aggiunto il comando finger nella console dell'emulatore per simulare l'autenticazione con l'impronta.
    • È stata aggiunta una dichiarazione di risorsa <public> per designare le risorse della libreria come risorse pubbliche e private.

      Nota: richiede plug-in Android per Gradle versione 1.3 o successive.

    • È stato aggiunto il supporto dell'associazione di dati per creare layout dichiarativi che associano la logica dell'applicazione agli elementi del layout.
    • Aggiunto il supporto per un modulo APK di test separato per creare APK di test in Android Studio.
    • È stato aggiornato AVD Manager con ottimizzazioni HAXM e notifiche migliorate.
    • Aggiunto il supporto dell'emulatore ARM e MIPS a 64 bit per QEMU 2.1.
    • Semplificazione della risoluzione degli avvisi Lint mediante l'aggiunta di correzioni rapide, come la generazione automatica dell'implementazione di Parcelable.
    • È stato aggiunto il supporto per i modelli live per l'inserimento rapido di snippet di codice.

    Android Studio v1.2.2(giugno 2015)

    Correzioni e miglioramenti:

    • Risolti problemi di build che impedivano il completamento delle build.

    Android Studio v1.2.1 (maggio 2015)

    Correzioni e miglioramenti:

    • Sono stati risolti problemi minori relativi alle prestazioni e alle funzionalità.

    Android Studio v1.2.0 (aprile 2015)

    Correzioni e miglioramenti:

    • È stata aggiornata la finestra di Android Runtime per includere lo strumento Monitoraggio memoria ed è stata aggiunta una scheda per il monitoraggio delle prestazioni della CPU.
    • È stata aggiunta una scheda Acquisizioni nel margine sinistro per visualizzare i file di dati sulle prestazioni di memoria e CPU acquisiti, ad esempio il monitoraggio del metodo della CPU e gli snapshot dell'heap di memoria.
    • Supporto esteso per le annotazioni con annotazioni di metadati aggiuntivi e nullabilità dedotta.
    • È stato migliorato l'editor di traduzioni con ulteriore supporto per la Best Current Practice (BCP) 47, che utilizza codici lingua e regione di tre lettere.
    • Funzionalità integrate di IntelliJ 14 e 14.1 per migliorare l'analisi del codice e le prestazioni:
      • Debug avanzato per mostrare i valori in linea per le variabili e gli oggetti di riferimento, nonché per eseguire la valutazione in linea di espressioni lambda e di operatori.
      • È stato aggiunto il rilevamento dello stile del codice per le dimensioni di tabulazione e rientro.
      • Sono stati aggiunti file temporanei per esperimenti di codifica e prototipazione senza file di progetto.
      • È stata aggiunta l'inserimento simultaneo di tag di apertura e chiusura in file HTML e XML.
      • È stato aggiunto un decompiler di classi Java integrato per consentirti di esaminare i contenuti di una libreria per cui il codice sorgente non è disponibile.

      Consulta la sezione Novità di IntelliJ per una descrizione completa delle nuove funzionalità e dei miglioramenti.

    • Sono state aggiunte altre visualizzazioni del progetto per Bozze, File di progetto, Problemi, Produzione e Test per migliorare la gestione e l'accesso ai progetti.
    • Sono stati migliorati il menu e le finestre di dialogo File > Impostazioni per un accesso e una gestione delle impostazioni migliorati.
    • È stato aggiunto il supporto per i display ad alta densità per Windows e Linux.
    • È stato aggiunto il supporto per le risorse a 280 dpi nella cartella res/drawable-280dpi/.

    Android Studio v1.1.0 (febbraio 2015)

    Varie correzioni e miglioramenti:

    • È stato aggiunto il supporto del modello di orologio Android Wear.
    • È stata modificata la creazione di nuovi progetti e moduli per includere cartelle res/mipmap per icone di avvio specifiche per la densità. Queste cartelle res/mipmap sostituiscono le cartelle res/drawable per le icone in Avvio app.
    • Sono state aggiornate le icone di avvio app per avere un aspetto Material Design ed è stata aggiunta un'icona di avvio app xxxhdpi.
    • Sono stati aggiunti e migliorati i controlli Lint per combinazioni di regione e lingua, icone di avvio app, nomi delle risorse e altri problemi comuni del codice.
    • È stato aggiunto il supporto per il tag di lingua Best Current Practice (BCP) 47.

    Android Studio versione 1.0.1 (dicembre 2014)

    Varie correzioni e miglioramenti:

    • Risolto il problema di blocco di AVD Manager e del file device.xml.
    • È stato corretto il log dell'emulatore sui sistemi Windows.
    • È stato risolto il problema relativo alla creazione di AVD con Android Studio e Android SDK installati su unità diverse sui sistemi Windows.
    • Imposta il canale di aggiornamento predefinito per i nuovi download su Stabile. Se hai installato la versione 1.0.0 di Android Studio e vuoi aggiornamenti stabili e pronti per la produzione, utilizza File > Impostazioni > Aggiornamenti per passare al canale di aggiornamento Stabile.

    Android Studio versione 1.0 (dicembre 2014)

    Versione iniziale di Android Studio.

    Android Studio versione 0.8.14 (ottobre 2014)

    Visita tools.android.com per un elenco completo delle modifiche.

    Android Studio v0.8.6 (agosto 2014)

    Per un elenco completo delle modifiche, visita la pagina tools.android.com.

    Android Studio v0.8.0 (giugno 2014)

    Aggiunto il supporto per i progetti Android Wear.

    Per un elenco completo delle modifiche, visita la pagina tools.android.com.

    Android Studio v0.5.2 (maggio 2014)

    Android Studio v0.4.6 (marzo 2014)

    Android Studio versione 0.4.2 (gennaio 2014)

    Android Studio versione 0.3.2 (ottobre 2013)

    Android Studio v0.2.x (luglio 2013)

    • Sono state unite le ultime modifiche al codebase di IntelliJ. Include correzioni per i problemi segnalati dagli utenti di Studio, come modifiche alle dimensioni dei caratteri Linux e al rendering dei caratteri.
    • Il plug-in Android per Gradle è stato aggiornato alla versione 0.5.0.

      Attenzione:questa nuova versione non è compatibile con le versioni precedenti. Quando apri un progetto che utilizza una versione precedente del plug-in, Studio mostra un errore che indica Aggiornamento del progetto Gradle <project_name> non riuscito.

      Il plug-in Gradle aggiornato include le seguenti modifiche:

      • È stato corretto il modello IDE in modo che contenga il file di output anche se è personalizzato tramite il linguaggio specifico del dominio. Inoltre, è stato corretto il DSL per ottenere/impostare il file di output sull'oggetto variante in modo che non sia necessario utilizzare variant.packageApplication or variant.zipAlign
      • È stata corretta la risoluzione delle dipendenze in modo da risolvere la combinazione di (configurazione predefinita, tipi di build, sapori) insieme anziché separatamente.
      • Dipendenza corretta per i test del progetto di libreria per includere correttamente tutte le dipendenze della libreria stessa.
      • È stato corretto il caso in cui due dipendenze hanno lo stesso nome foglia.
      • È stato risolto il problema a causa del quale il file delle regole Proguard non può essere applicato alle varianti.

      Tutte le note di rilascio del plug-in Gradle sono disponibili qui: http://tools.android.com/tech-docs/new-build-system.

    • Gli errori di Gradle di aapt non puntano più ai file di output uniti nella cartella build/, ma puntano alle posizioni di origine reali.
    • Build parallele. Ora è possibile utilizzare le build parallele di Gradle. Tieni presente che le build parallele sono in "incubazione" (consulta la documentazione di Gradle). Per impostazione predefinita questa funzionalità non è attiva. Per attivarlo, vai a Preferenze > Compilatore e seleziona la casella Compila moduli indipendenti in parallelo.
    • Ulteriori lavori sul nuovo repository di risorse utilizzato per il rendering del layout, il ripiegamento delle risorse nell'editor e altro ancora:
      • Supporto di base per le dipendenze della libreria .aar (ad es. l'utilizzo di una libreria senza una copia locale delle sorgenti). Ancora non funziona per la convalida XML delle risorse e la navigazione negli editor di origine.
      • Rilevamento dei cicli nei riferimenti alle risorse.
      • La documentazione rapida (F1), che può mostrare tutte le traduzioni della stringa sotto il cursore, ora mostra anche tutti gli overlay delle risorse delle varie varianti e dei vari tipi di build di Gradle, nonché le librerie. Sono elencati in ordine inverso di sovrapposizione delle risorse, con una linea orizzontale che attraversa le versioni della stringa mascherate.
      • Correzioni per gestire l'aggiornamento delle risorse unite quando cambia l'insieme delle dipendenze dei moduli.
      • Correzioni del rendering XML per gestire correttamente le dichiarazioni di entità carattere e le sequenze di escape XML e Unicode.
    • Supporto del salvataggio degli screenshot per le finestre di anteprima del layout e dell'editor del layout.
    • Correzioni di bug dei modelli.
    • Correzioni di bug di Lint.
    • Varie correzioni per i report sugli arresti anomali. Grazie e continua a inviare report sugli arresti anomali.

    Android Studio v0.1.x (maggio 2013)

    • Varie correzioni di bug, inclusa una correzione per un problema comune di installazione di Windows.

    Versioni precedenti del plug-in Android per Gradle

    3.6.0 (febbraio 2020)

    Questa versione del plug-in Android richiede quanto segue:

    Nuove funzionalità

    Questa versione del plug-in Android per Gradle include le seguenti nuove funzionalità.

    Visualizza associazione

    Il binding delle visualizzazioni offre sicurezza in fase di compilazione quando fai riferimento alle visualizzazioni nel tuo codice. Ora puoi sostituire findViewById() con il riferimento alla classe di binding generata automaticamente. Per iniziare a utilizzare il binding delle visualizzazioni, includi quanto segue nel file build.gradle di ogni modulo:

          android {
              viewBinding.enabled = true
          }
          
          android {
              viewBinding.enabled = true
          }
          

    Per saperne di più, leggi la documentazione sul binding delle visualizzazioni.

    Supporto del plug-in Maven Publish

    Il plug-in Android per Gradle include il supporto per il plug-in Gradle per la pubblicazione Maven, che consente di pubblicare gli artefatti di build in un repository Apache Maven. Il plug-in Android Gradle crea un componente per ogni artefatto della variante di build nel modulo dell'app o della libreria che puoi utilizzare per personalizzare una pubblicazione in un repository Maven.

    Per saperne di più, visita la pagina su come utilizzare il plug-in Maven Publish.

    Nuovo strumento di pacchettizzazione predefinito

    Quando crei la versione di debug della tua app, il plug-in utilizza un nuovo strumento di packaging, chiamato zipflinger, per creare l'APK. Questo nuovo strumento dovrebbe migliorare la velocità di compilazione. Se il nuovo strumento di creazione dei pacchetti non funziona come previsto, segnala un bug. Puoi ripristinare l'utilizzo del vecchio strumento di creazione dei pacchetti includendo quanto segue nel file gradle.properties:

            android.useNewApkCreator=false
          
    Attribuzione della build nativa

    Ora puoi determinare il tempo necessario a Clang per compilare e collegare ogni file C/C++ nel tuo progetto. Gradle può generare una traccia di Chrome che contiene i timestamp di questi eventi del compilatore, in modo da poter comprendere meglio il tempo necessario per compilare il progetto. Per generare questo file di attribuzione della build, segui questi passaggi:

    1. Aggiungi il flag -Pandroid.enableProfileJson=true quando esegui una build Gradle. Ad esempio:

      gradlew assembleDebug -Pandroid.enableProfileJson=true

    2. Apri il browser Chrome e digita chrome://tracing nella barra di ricerca.

    3. Fai clic sul pulsante Carica e vai a <var>project-root</var>/build/android-profile per trovare il file. Il file si chiama profile-<var>timestamp</var>.json.gz.

    Puoi visualizzare i dati di attribuzione della build nativa nella parte superiore del visualizzatore:

    Traccia di attribuzione della build nativa in Chrome

    Modifiche al comportamento

    Quando utilizzi questa versione del plug-in, potresti riscontrare le seguenti modifiche nel comportamento.

    Librerie native compresse per impostazione predefinita

    Quando crei l'app, il plug-in ora imposta extractNativeLibs su "false" per impostazione predefinita. ovvero le librerie native sono allineate alla pagina e compresse. Sebbene ciò comporti dimensioni di caricamento maggiori, i tuoi utenti beneficiano di quanto segue:

    • Dimensioni di installazione dell'app più ridotte perché la piattaforma può accedere alle librerie native direttamente dall'APK installato, senza creare una copia delle librerie.
    • Dimensioni di download più ridotte perché la compressione del Play Store è in genere migliore quando includi librerie native non compresse nell'APK o nell'Android App Bundle.

    Se vuoi che il plug-in Android Gradle comprima le librerie native, includi quanto segue nel manifest dell'app:

            <application
              android:extractNativeLibs="true"
              ... >
            </application>
            
          

    Nota:l'attributo extractNativeLibs manifest è stato sostituito dall'opzione useLegacyPackaging DSL. Per ulteriori informazioni, consulta la nota di rilascio Utilizzare il linguaggio specifico del dominio per comprimere le librerie native.

    Versione NDK predefinita

    Se scarichi più versioni dell'NDK, il plug-in Android Gradle ora seleziona una versione predefinita da utilizzare per la compilazione dei file di codice sorgente. In precedenza, il plug-in selezionava l'ultima versione scaricata dell'NDK. Utilizza la proprietà android.ndkVersion nel file build.gradle del modulo per ignorare il valore predefinito selezionato dal plug-in.

    Generazione semplificata della classe R

    Il plug-in Android Gradle semplifica il classpath di compilazione generando una sola classe R per ogni modulo della libreria nel progetto e condividendo queste classi R con altre dipendenze del modulo. Questa ottimizzazione dovrebbe comportare build più veloci, ma richiede di tenere presente quanto segue:

    • Poiché il compilatore condivide le classi R con le dipendenze dei moduli upstream, è importante che ogni modulo del progetto utilizzi un nome del pacchetto univoco.
    • La visibilità della classe R di una libreria per le altre dipendenze del progetto è determinata dalla configurazione utilizzata per includere la libreria come dipendenza. Ad esempio, se la libreria A include la libreria B come dipendenza "api", la libreria A e altre librerie che dipendono dalla libreria A hanno accesso alla classe R della libreria B. Tuttavia, altre librerie potrebbero non avere accesso alla classe R della libreria B. Se la libreria A utilizza la configurazione delle dipendenze implementation. Per saperne di più, leggi le configurazioni delle dipendenze.
    Rimuovi le risorse mancanti dalla configurazione predefinita

    Per i moduli della libreria, se includi una risorsa per una lingua che non è inclusa nel set predefinito di risorse, ad esempio se includi hello_world come risorsa stringa in /values-es/strings.xml, ma non definisci la risorsa in /values/strings.xml, il plug-in Android Gradle non include più la risorsa durante la compilazione del progetto. Questa modifica del comportamento dovrebbe comportare un minor numero di eccezioni di runtime Resource Not Found e una maggiore velocità di compilazione.

    D8 ora rispetta le norme di conservazione CLASS per le annotazioni

    Durante la compilazione dell'app, D8 ora rispetta i casi in cui le annotazioni applicano un criterio di conservazione CLASS e queste annotazioni non sono più disponibili in fase di runtime. Questo comportamento si verifica anche quando l'SDK di destinazione dell'app è impostato sul livello API 23, che in precedenza consentiva l'accesso a queste annotazioni durante l'esecuzione durante la compilazione dell'app utilizzando versioni precedenti del plug-in Android Gradle e D8.

    Altre modifiche al comportamento
    • aaptOptions.noCompress non fa più distinzione tra maiuscole e minuscole su tutte le piattaforme (sia per gli APK che per i bundle) e rispetta i percorsi che utilizzano caratteri maiuscoli.
    • Il data binding ora è incrementale per impostazione predefinita. Per saperne di più, consulta il problema n. 110061530.

    • Tutti i test delle unità, inclusi i test delle unità Roboelectric, ora sono completamente memorizzabili nella cache. Per saperne di più, consulta il problema n. 115873047.

    Correzioni di bug

    Questa versione del plug-in Android per Gradle include le seguenti correzioni di bug:

    • I test unitari Robolectric sono ora supportati nei moduli della libreria che utilizzano il data binding. Per saperne di più, consulta il problema n. 126775542.
    • Ora puoi eseguire attività connectedAndroidTest su più moduli mentre è abilitata la modalità di esecuzione parallela di Gradle.

    Problemi noti

    Questa sezione descrive i problemi noti esistenti nel plug-in Android per Gradle 3.6.0.

    Prestazioni lente dell'attività Android Lint

    Android Lint può richiedere molto più tempo per essere completato in alcuni progetti a causa di una regressione nella sua infrastruttura di analisi, con conseguente calcolo più lento dei tipi dedotti per le espressioni lambda in determinate costruzioni di codice.

    Il problema viene segnalato come bug in IDEA e verrà risolto nel plug-in Android per Gradle 4.0.

    Classe manifest mancante {:#agp-missing-manifest}

    Se la tua app definisce autorizzazioni personalizzate nel manifest, il plug-in Gradle per Android in genere genera una classe Manifest.java che include le tue autorizzazioni personalizzate come costanti stringa. Il plug-in include questa classe nella tua app, in modo che tu possa fare riferimento più facilmente a queste autorizzazioni in fase di runtime.

    La generazione della classe manifest non funziona nel plug-in Android per Gradle 3.6.0. Se crei la tua app con questa versione del plug-in e fa riferimento alla classe manifest, potresti visualizzare un'eccezione ClassNotFoundException. Per risolvere il problema, esegui una delle seguenti operazioni:

    • Fai riferimento alle tue autorizzazioni personalizzate in base al nome completo. Ad esempio, "com.example.myapp.permission.DEADLY_ACTIVITY".

    • Definisci le tue costanti, come mostrato di seguito:

                  public final class CustomPermissions {
                    public static final class permission {
                      public static final String DEADLY_ACTIVITY="com.example.myapp.permission.DEADLY_ACTIVITY";
                    }
                  }
                  
                

    3.5.0 (agosto 2019)

    Il plug-in Android per Gradle 3.5.0, insieme ad Android Studio 3.5, è una release principale e il risultato del progetto Marble, che si concentra sul miglioramento di tre aree principali degli strumenti per sviluppatori Android: integrità del sistema, perfezionamento delle funzionalità e correzione dei bug. In particolare, il miglioramento della velocità di compilazione dei progetti è stato l'obiettivo principale di questo aggiornamento.

    Per informazioni su questi e altri aggiornamenti di Project Marble, leggi il post del blog per sviluppatori Android o le sezioni seguenti.

    Questa versione del plug-in Android richiede quanto segue:

    3.5.4 (luglio 2020)

    Questo aggiornamento secondario supporta la compatibilità con nuove impostazioni predefinite e funzionalità per la visibilità dei pacchetti in Android 11.

    Per informazioni dettagliate, consulta le note di rilascio della versione 4.0.1.

    3.5.3 (dicembre 2019)

    Questo aggiornamento secondario supporta Android Studio 3.5.3 e include varie correzioni di bug e miglioramenti delle prestazioni.

    3.5.2 (novembre 2019)

    Questo aggiornamento secondario supporta Android Studio 3.5.2 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug degne di nota, leggi il post correlato sul blog sugli aggiornamenti delle release.

    3.5.1 (ottobre 2019)

    Questo aggiornamento secondario supporta Android Studio 3.5.1 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug degne di nota, leggi il post correlato sul blog sugli aggiornamenti delle release.

    Elaborazione incrementale delle annotazioni

    Il processore di annotazioni Data Binding supporta l'elaborazione incrementale delle annotazioni se imposti android.databinding.incremental=true nel file gradle.properties. Questa ottimizzazione si traduce in un miglioramento del rendimento delle build incrementali. Per un elenco completo dei processori di annotazioni ottimizzati, consulta la tabella dei processori di annotazioni incrementali.

    Inoltre, KAPT 1.3.30 e versioni successive supportano anche i processori di annotazioni incrementali, che puoi attivare includendo kapt.incremental.apt=true nel file gradle.properties.

    Test delle unità memorizzabili nella cache

    Quando attivi i test delle unità per utilizzare risorse, asset e manifest di Android impostando includeAndroidResources su true, il plug-in Android per Gradle genera un file di configurazione di test contenente percorsi assoluti, il che interrompe la ricollocabilità della cache. Puoi indicare al plug-in di generare invece la configurazione di test utilizzando percorsi relativi, il che consente alla attività AndroidUnitTest di essere completamente memorizzabile nella cache, includendo quanto segue nel file gradle.properties:

          android.testConfig.useRelativePath = true
        

    Problemi noti

    • Quando utilizzi il plug-in Kotlin Gradle 1.3.31 o versioni precedenti, potresti visualizzare il seguente avviso durante la creazione o la sincronizzazione del progetto:

                WARNING: API 'variant.getPackageLibrary()' is obsolete and has been replaced
                        with 'variant.getPackageLibraryProvider()'.
                
              

      Per risolvere questo problema, esegui l'upgrade del plug-in alla versione 1.3.40 o successive.

    3.4.0 (aprile 2019)

    Questa versione del plug-in Android richiede quanto segue:

    3.4.3 (luglio 2020)

    Questo aggiornamento secondario supporta la compatibilità con nuove impostazioni predefinite e funzionalità per la visibilità dei pacchetti in Android 11.

    Per informazioni dettagliate, consulta le note di rilascio della versione 4.0.1.

    3.4.2 (luglio 2019)

    Questo aggiornamento secondario supporta Android Studio 3.4.2 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug degne di nota, leggi il post correlato sul blog sugli aggiornamenti delle release.

    3.4.1 (maggio 2019)

    Questo aggiornamento secondario supporta Android Studio 3.4.1 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug degne di nota, leggi il post correlato sul blog sugli aggiornamenti delle release.

    Nuove funzionalità

    • Nuove configurazioni delle dipendenze del controllo lint:il comportamento di lintChecks è cambiato ed è stata introdotta una nuova configurazione delle dipendenze, lintPublish, per darti maggiore controllo sui controlli lint inclusi nelle tue librerie Android.

      • lintChecks: si tratta di una configurazione esistente che devi utilizzare per i controlli lint che vuoi eseguire solo durante la creazione del progetto in locale. Se in precedenza utilizzavi la configurazione delle dipendenze lintChecks per includere i controlli lint nell'AAR pubblicato, devi eseguire la migrazione di queste dipendenze per utilizzare invece la nuova configurazione lintPublish descritta di seguito.
      • lintPublish: utilizza questa nuova configurazione nei progetti della libreria per i controlli lint che vuoi includere nell'AAR pubblicato, come mostrato di seguito. Ciò significa che i progetti che utilizzano la tua libreria applicano anche questi controlli lint.

      Il seguente esempio di codice utilizza entrambe le configurazioni delle dipendenze in un progetto di libreria Android locale.

      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks project(':lint')
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish project(':lintpublish')
      }
              
      dependencies {
        // Executes lint checks from the ':lint' project at build time.
        lintChecks(project(":lint"))
        // Packages lint checks from the ':lintpublish' in the published AAR.
        lintPublish(project(":lintpublish"))
          }
              
      • In generale, le attività di creazione dei pacchetti e firma dovrebbero registrare un miglioramento complessivo della velocità di compilazione. Se noti un peggioramento delle prestazioni correlato a queste attività, segnala un bug.

    Modifiche al comportamento

    • Avviso di ritiro del plug-in delle funzionalità delle app istantanee Android: se utilizzi ancora il plug-in com.android.feature per creare la tua app istantanea, il plug-in Android per Gradle 3.4.0 ti mostrerà un avviso di ritiro. Per assicurarti di poter continuare a creare la tua app istantanea nelle versioni future del plug-in, esegui la migrazione della tua app istantanea all'utilizzo del plug-in delle funzionalità dinamiche, che ti consente anche di pubblicare le esperienze della tua app installata e istantanea da un unico Android App Bundle.

    • R8 attivato per impostazione predefinita:R8 integra la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la creazione di file DEX in un unico passaggio, con conseguente miglioramento notevole delle prestazioni di build. R8 è stato introdotto nel plug-in Android per Gradle 3.3.0 e ora è abilitato per impostazione predefinita sia per i progetti di app sia per le librerie Android che utilizzano il plug-in 3.4.0 e versioni successive.

    L'immagine seguente fornisce una panoramica di alto livello della procedura di compilazione prima dell'introduzione di R8.

    Prima di R8, ProGuard era un passaggio di compilazione diverso da dexing e
              desugaring.

    Ora, con R8, la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in formato DEX (D8) vengono completati in un unico passaggio, come illustrato di seguito.

    Con R8, la rimozione dello zucchero sintattico, la riduzione, l&#39;offuscamento, l&#39;ottimizzazione e
      la creazione di file DEX vengono eseguiti in un unico passaggio di compilazione.

    Tieni presente che R8 è progettato per funzionare con le regole ProGuard esistenti, quindi probabilmente non dovrai intraprendere alcuna azione per usufruire di R8. Tuttavia, poiché è una tecnologia diversa da ProGuard progettata specificamente per i progetti Android, la riduzione e l'ottimizzazione potrebbero comportare la rimozione di codice che ProGuard potrebbe non aver rimosso. Pertanto, in questa improbabile situazione, potresti dover aggiungere regole aggiuntive per mantenere il codice nell'output della build.

    Se riscontri problemi durante l'utilizzo di R8, leggi le domande frequenti sulla compatibilità di R8 per verificare se esiste una soluzione al tuo problema. Se una soluzione non è documentata, segnala un bug. Puoi disattivare R8 aggiungendo una delle seguenti righe al file gradle.properties del tuo progetto:

          # Disables R8 for Android Library modules only.
          android.enableR8.libraries = false
          # Disables R8 for all modules.
          android.enableR8 = false
          
        

    Nota:per un determinato tipo di build, se imposti useProguard su false nel file build.gradle del modulo dell'app, il plug-in Android per Gradle utilizza R8 per ridurre il codice dell'app per quel tipo di build, indipendentemente dal fatto che tu disattivi R8 nel file gradle.properties del progetto.

    • ndkCompile è deprecato: ora ricevi un errore di build se provi a utilizzare ndkBuild per compilare le librerie native. Devi invece utilizzare CMake o ndk-build per aggiungere codice C e C++ al tuo progetto.

    Problemi noti

    • L'utilizzo corretto di nomi di pacchetti unici non è attualmente applicato, ma diventerà più rigoroso nelle versioni successive del plug-in. Nel plug-in Android Gradle versione 3.4.0, puoi attivare il controllo per verificare se il tuo progetto dichiara nomi di pacchetti accettabili aggiungendo la riga riportata di seguito al file gradle.properties.

                android.uniquePackageNames = true
                
              

      Per scoprire di più sull'impostazione di un nome del pacchetto tramite il plug-in Android Gradle, consulta Impostare l'ID applicazione.

    3.3.0 (gennaio 2019)

    Questa versione del plug-in Android richiede quanto segue:

    3.3.3 (luglio 2020)

    Questo aggiornamento secondario supporta la compatibilità con nuove impostazioni predefinite e funzionalità per la visibilità dei pacchetti in Android 11.

    Per informazioni dettagliate, consulta le note di rilascio della versione 4.0.1.

    3.3.2 (marzo 2019)

    Questo aggiornamento secondario supporta Android Studio 3.3.2 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco di correzioni di bug degne di nota, leggi il post correlato sul blog sugli aggiornamenti delle release.

    3.3.1 (febbraio 2019)

    Questo aggiornamento secondario supporta Android Studio 3.3.1 e include varie correzioni di bug e miglioramenti delle prestazioni.

    Nuove funzionalità

    • Sincronizzazione migliorata del classpath: quando risolve le dipendenze nei classpath di runtime e di compilazione, il plug-in Android Gradle tenta di risolvere determinati conflitti di versioni downstream per le dipendenze che appaiono in più classpath.

      Ad esempio, se il classpath di runtime include la libreria A versione 2.0 e il classpath di compilazione include la libreria A versione 1.0, il plug-in aggiorna automaticamente la dipendenza dal classpath di compilazione alla libreria A versione 2.0 per evitare errori.

      Tuttavia, se il classpath del runtime include la libreria A versione 1.0 e la compilazione include la libreria A versione 2.0, il plug-in non esegue il downgrade della dipendenza dal classpath di compilazione alla libreria A versione 1.0 e riceverai un errore. Per scoprire di più, consulta Risolvere i conflitti tra i classpath.

    • Compilazione Java incrementale migliorata quando si utilizzano processori di annotazioni: Questo aggiornamento riduce il tempo di compilazione migliorando il supporto per la compilazione Java incrementale quando si utilizzano processori di annotazioni.

      Nota: questa funzionalità è compatibile con Gradle 4.10.1 e versioni successive, ad eccezione di Gradle 5.1 a causa del problema 8194 di Gradle.

      • Per i progetti che utilizzano Kapt (la maggior parte dei progetti solo Kotlin e i progetti ibridi Kotlin-Java): la compilazione Java incrementale è abilitata, anche quando utilizzi il data binding o il plug-in retro-lambda. L'elaborazione delle annotazioni da parte dell'attività Kapt non è ancora incrementale.

      • Per i progetti che non utilizzano Kapt (progetti solo Java): se i processori di annotazioni che utilizzi supportano tutti l'elaborazione incrementale delle annotazioni, la compilazione incrementale di Java è abilitata per impostazione predefinita. Per monitorare l'adozione del processore di annotazioni incrementali, consulta Gradle issue 5277.

        Se, tuttavia, uno o più processori di annotazioni non supportano le build incrementali, la compilazione incrementale di Java non è abilitata. In alternativa, puoi includere il seguente flag nel file gradle.properties:

        android.enableSeparateAnnotationProcessing=true
                    

        Quando includi questo flag, il plug-in Android Gradle esegue i processori di annotazioni in un'attività separata e consente all'attività di compilazione Java di essere eseguita in modo incrementale.

    • Informazioni di debug migliori quando si utilizza un'API obsoleta: quando il plug-in rileva che stai utilizzando un'API non più supportata, ora può fornire informazioni più dettagliate per aiutarti a determinare dove viene utilizzata l'API. Per visualizzare le informazioni aggiuntive, devi includere quanto segue nel file gradle.properties del progetto:

                android.debug.obsoleteApi=true
              

      Puoi anche attivare il flag passando -Pandroid.debug.obsoleteApi=true dalla riga di comando.

    • Puoi eseguire test di strumentazione sui moduli delle funzionalità dalla riga di comando.

    Modifiche al comportamento

    • Configurazione delle attività lazy:il plug-in ora utilizza la nuova API di creazione delle attività di Gradle per evitare di inizializzare e configurare le attività che non sono necessarie per completare la build corrente (o le attività non presenti nel grafico delle attività di esecuzione). Ad esempio, se hai più varianti di build, come le varianti di build "release" e "debug", e stai creando la versione "debug" della tua app, il plug-in evita di inizializzare e configurare le attività per la versione "release" della tua app.

      La chiamata di alcuni metodi precedenti nell'API Variants, ad esempio variant.getJavaCompile(), potrebbe comunque forzare la configurazione dell'attività. Per assicurarti che la build sia ottimizzata per la configurazione delle attività differita, richiama nuovi metodi che restituiscono invece un oggetto TaskProvider, come variant.getJavaCompileProvider().

      Se esegui attività di build personalizzate, scopri come adattarti alla nuova API di creazione delle attività di Gradle.

    • Per un determinato tipo di build, quando imposti useProguard false, il plug-in ora utilizza R8 anziché ProGuard per ridurre e offuscare il codice e le risorse dell'app. Per saperne di più su R8, leggi questo post del blog del Blog per sviluppatori Android.

    • Generazione più rapida della classe R per i progetti di libreria: in precedenza, il plug-in Android Gradle generava un file R.java per ciascuna delle dipendenze del progetto e poi compilava queste classi R insieme alle altre classi dell'app. Il plug-in ora genera direttamente un file JAR contenente la classe R compilata della tua app, senza prima creare classi R.java intermedie. Questa ottimizzazione può migliorare significativamente le prestazioni di compilazione per i progetti che includono molti sottoprogetti e dipendenze della libreria e migliorare la velocità di indicizzazione in Android Studio.

    • Quando crei un Android App Bundle, gli APK generati da questo bundle di app che hanno come target Android 6.0 (livello API 23) o versioni successive ora includono versioni non compresse delle tue librerie native per impostazione predefinita. Questa ottimizzazione evita la necessità per il dispositivo di creare una copia della libreria e riduce le dimensioni su disco dell'app. Se preferisci disattivare questa ottimizzazione, aggiungi quanto segue al file gradle.properties:

      android.bundle.enableUncompressedNativeLibs = false
              
    • Il plug-in impone le versioni minime di alcuni plug-in di terze parti.

    • Sincronizzazione del progetto con una sola variante: la sincronizzazione del progetto con la configurazione della build è un passaggio importante per consentire ad Android Studio di comprendere la struttura del progetto. Tuttavia, questo processo può richiedere molto tempo per i progetti di grandi dimensioni. Se il tuo progetto utilizza più varianti di build, ora puoi ottimizzare le sincronizzazioni del progetto limitandole solo alla variante attualmente selezionata.

      Per attivare questa ottimizzazione, devi utilizzare Android Studio 3.3 o versioni successive con Android Gradle Plugin 3.3.0 o versioni successive. Quando soddisfi questi requisiti, l'IDE ti chiede di abilitare questa ottimizzazione quando sincronizzi il progetto. L'ottimizzazione è attivata per impostazione predefinita anche nei nuovi progetti.

      Per attivare manualmente questa ottimizzazione, fai clic su File > Impostazioni > Sperimentale > Gradle (Android Studio > Preferenze > Sperimentale > Gradle su Mac) e seleziona la casella di controllo Sincronizza solo la variante attiva.

      Nota: questa ottimizzazione supporta completamente i progetti che includono i linguaggi Java e C++ e supporta in parte Kotlin. Quando attivi l'ottimizzazione per i progetti con contenuti Kotlin, la sincronizzazione Gradle torna a utilizzare internamente le varianti complete.

    • Download automatico dei pacchetti SDK mancanti: questa funzionalità è stata estesa per supportare NDK. Per saperne di più, leggi Download automatico dei pacchetti mancanti con Gradle.

    Correzioni di bug

    • Il plug-in Android per Gradle 3.3.0 risolve i seguenti problemi:

      • Il processo di build chiama android.support.v8.renderscript.RenderScript anziché la versione AndroidX, nonostante Jetifier sia abilitato
      • Conflitti dovuti a androidx-rs.jar, incluso il bundling statico annotation.AnyRes
      • Quando utilizzi RenderScript, non devi più impostare manualmente la versione di Build Tools nei file build.gradle

    3.2.0 (settembre 2018)

    Questa versione del plug-in Android richiede quanto segue:

    3.2.1 (ottobre 2018)

    Con questo aggiornamento, non è più necessario specificare una versione per gli strumenti di build dell'SDK. Il plug-in Android per Gradle ora utilizza la versione 28.0.3 per impostazione predefinita.

    Nuove funzionalità

    • Supporto per la creazione di Android App Bundle:l'app bundle è un nuovo formato di caricamento che include tutto il codice e le risorse compilati della tua app, mentre rimanda la generazione e la firma degli APK al Google Play Store. Non devi più creare, firmare e gestire più APK e gli utenti ricevono download più piccoli ottimizzati per il loro dispositivo. Per saperne di più, leggi Informazioni sugli Android App Bundle.

    • Supporto di velocità di compilazione incrementale migliorate quando si utilizzano i processori di annotazioni:Il DSL AnnotationProcessorOptions ora estende CommandLineArgumentProvider, il che consente a te o all'autore del processore di annotazioni di annotare gli argomenti per il processore utilizzando annotazioni del tipo di proprietà di compilazione incrementale. L'utilizzo di queste annotazioni migliora la correttezza e il rendimento delle build incrementali e pulite memorizzate nella cache. Per saperne di più, leggi Passare argomenti ai processori di annotazioni.

    • Strumento di migrazione per AndroidX:quando utilizzi Android Gradle Plugin 3.2.0 con Android 3.2 e versioni successive, puoi eseguire la migrazione delle dipendenze locali e Maven del tuo progetto per utilizzare le nuove librerie AndroidX selezionando Refactor > Migrate to AndroidX dalla barra dei menu. L'utilizzo di questo strumento di migrazione imposta anche i seguenti flag su true nel file gradle.properties:

      • android.useAndroidX: se impostato su true, il plug-in Android utilizza la libreria AndroidX appropriata anziché una libreria di supporto. Se questo flag non è specificato, il plug-in lo imposta su false per impostazione predefinita.

      • android.enableJetifier: se impostato su true, il plug-in Android esegue automaticamente la migrazione delle librerie di terze parti esistenti per utilizzare AndroidX riscrivendo i relativi file binari. Se questo flag non è specificato, il plug-in lo imposta su false per impostazione predefinita. Puoi impostare questo flag su true solo se android.useAndroidX è impostato anche su true, altrimenti si verifica un errore di build.

        Per scoprire di più, leggi la panoramica di AndroidX.

    • Nuovo riduttore di codice, R8: 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
              
              android.enableR8 = true
              

    Modifiche al comportamento

    • La rimozione dello zucchero sintattico con D8 è ora abilitata per impostazione predefinita.

    • AAPT2 è ora disponibile nel repository Maven di Google. Per utilizzare AAPT2, assicurati di avere la dipendenza google() nel file build.gradle, come mostrato di seguito:

                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()
                  }
                
    • Il multidex nativo ora è abilitato per impostazione predefinita. Le versioni precedenti di Android Studio abilitavano 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 Gradle abilita il multidex nativo per tutti i moduli che impostano minSdkVersion=21 o versioni successive.

    • Il plug-in ora impone una versione minima del plug-in protobuf (0.8.6), del plug-in Kotlin (1.2.50) e del plug-in Crashlytics (1.25.4).

    • Il plug-in del modulo delle funzionalità,com.android.feature, ora impone l'utilizzo di sole lettere, cifre e trattini bassi quando si specifica un nome di modulo. Ad esempio, se il nome del modulo della funzionalità include trattini, viene visualizzato un errore di build. Questo comportamento corrisponde a quello del plug-in delle funzionalità dinamiche.

    Correzioni di bug

    3.1.0 (marzo 2018)

    Questa versione del plug-in Android richiede quanto segue:

    • Gradle 4.4 o versioni successive.

      Per saperne di più, leggi la sezione relativa all'aggiornamento di Gradle.

    • Strumenti di creazione 27.0.3 o versioni successive.

      Tieni presente che non è più necessario specificare una versione per gli strumenti di build utilizzando la proprietà android.buildToolsVersion. Il plug-in utilizza la versione minima richiesta per impostazione predefinita.

    Nuovo compilatore DEX, D8

    Per impostazione predefinita, Android Studio ora utilizza un nuovo compilatore DEX chiamato D8. La compilazione DEX è il processo di trasformazione del bytecode .class in bytecode .dex per Android Runtime (o Dalvik, per le versioni precedenti di Android). Rispetto al compilatore precedente, chiamato DX, D8 compila più velocemente e genera file DEX più piccoli, mantenendo le stesse prestazioni di runtime dell'app o migliori.

    D8 non dovrebbe modificare il flusso di lavoro di sviluppo delle app quotidiano. Tuttavia, se riscontri problemi relativi al nuovo compilatore, segnala un bug. Puoi disattivare temporaneamente D8 e utilizzare DX includendo quanto segue nel file gradle.properties del progetto:

          android.enableD8=false
        

    Per i progetti che utilizzano le funzionalità del linguaggio Java 8, il desugaring incrementale è abilitato per impostazione predefinita. Puoi disattivarla specificando quanto segue nel file gradle.properties del progetto:

          android.enableIncrementalDesugaring=false.
        

    Utenti di anteprima:se utilizzi già una versione di anteprima di D8, tieni presente che ora la compilazione viene eseguita in base alle librerie incluse negli strumenti di compilazione dell'SDK, non nella JDK. Pertanto, se accedi ad API esistenti in JDK, ma non nelle librerie degli strumenti di compilazione dell'SDK, ricevi un errore di compilazione.

    Modifiche al comportamento

    • Quando crei più APK, ognuno dei quali ha come target un'ABI diversa, 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")
                        ...
                    }
                }
              
    • La cache di build del plug-in Android ora elimina le voci della cache più vecchie di 30 giorni.

    • Il passaggio di "auto" a resConfig non seleziona più automaticamente le risorse stringa da includere nel tuo APK. Se continui a utilizzare "auto", il plug-in pacchettizza tutte le risorse stringa fornite dalla tua app e dalle relative dipendenze. Pertanto, devi specificare ogni impostazione regionale che vuoi che il plug-in includa nel tuo APK.

    • Poiché i moduli locali non possono dipendere dall'APK di test della tua app, l'aggiunta di dipendenze ai test strumentati utilizzando la configurazione androidTestApi, anziché androidTestImplementation, fa sì che Gradle emetta il seguente avviso:

              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              
              WARNING: Configuration 'androidTestApi' is obsolete
              and has been replaced with 'androidTestImplementation'
              

    Correzioni

    • Corregge un problema per cui Android Studio non riconosce correttamente le dipendenze nelle build composite.
    • Risolve un problema per cui si verifica un errore di sincronizzazione del progetto durante il caricamento del plug-in Android più volte in una singola build, ad esempio quando più progetti secondari includono il plug-in Android nel classpath di buildscript.

    3.0.0 (ottobre 2017)

    Il plug-in Android per Gradle 3.0.0 include una serie di modifiche volte a risolvere i problemi di prestazioni dei progetti di grandi dimensioni.

    Ad esempio, in un progetto scheletro di esempio con circa 130 moduli e un numero elevato di dipendenze esterne (ma senza codice o risorse), puoi riscontrare miglioramenti delle prestazioni simili ai seguenti:

    Versione del plug-in Android + versione di Gradle Plug-in Android 2.2.0 + Gradle 2.14.1 Plug-in Android 2.3.0 + Gradle 3.3 Plug-in Android 3.0.0 + Gradle 4.1
    Configurazione (ad es. esecuzione di ./gradlew --help) ~2 minuti ~9 s ~2,5 s
    Modifica di una riga di Java (modifica dell'implementazione) ~2 min 15 sec ~29 s ~6,4 s

    Alcune di queste modifiche interrompono le build esistenti. Pertanto, prima di utilizzare il nuovo plug-in, valuta l'impegno necessario per eseguire la migrazione del progetto.

    Se non noti i miglioramenti delle prestazioni descritti sopra, segnala un bug e includi una traccia della build utilizzando Gradle Profiler.

    Questa versione del plug-in Android richiede quanto segue:

    • Gradle 4.1 o versioni successive. Per saperne di più, leggi la sezione sull'aggiornamento di Gradle.
    • Strumenti di creazione 26.0.2 o versioni successive. Con questo aggiornamento, non è più necessario specificare una versione per gli strumenti di compilazione: il plug-in utilizza la versione minima richiesta per impostazione predefinita. Pertanto, ora puoi rimuovere la proprietà android.buildToolsVersion.

    3.0.1 (novembre 2017)

    Si tratta di un aggiornamento secondario per supportare Android Studio 3.0.1 e include correzioni di bug e miglioramenti delle prestazioni generali.

    Ottimizzazioni

    • Migliore parallelismo per i progetti multimodulo tramite un grafico delle attività con granularità fine.
    • Quando apporti modifiche alla dipendenza, Gradle esegue build più veloci non ricompilando i moduli che non hanno accesso all'API della dipendenza. Devi limitare le dipendenze che espongono le proprie API ad altri moduli utilizzando le nuove configurazioni delle dipendenze di Gradle: implementation, api, compileOnly, e runtimeOnly.
    • Velocità di compilazione incrementale più rapida grazie al dexing per classe. Ogni classe viene ora compilata in file DEX separati e vengono ricompilate solo le classi modificate. Dovresti anche aspettarti velocità di compilazione migliorate per le app che impostano minSdkVersion su 20 o meno e utilizzano multi-dex legacy.
    • Velocità di compilazione migliorata grazie all'ottimizzazione di alcune attività per l'utilizzo di output memorizzati nella cache. Per usufruire di questa ottimizzazione, devi prima attivare la cache di build Gradle.
    • Elaborazione incrementale delle risorse migliorata utilizzando AAPT2, ora abilitato per impostazione predefinita. Se riscontri problemi durante l'utilizzo di AAPT2, segnala un bug. Puoi anche disattivare AAPT2 impostando android.enableAapt2=false nel file gradle.properties e riavviando il daemon Gradle eseguendo ./gradlew --stop dalla riga di comando.

    Nuove funzionalità

    • Gestione delle dipendenze in base alle varianti. Quando crei una determinata variante di un modulo, il plug-in ora corrisponde automaticamente alle varianti delle dipendenze del modulo della libreria locale alla variante del modulo che stai creando.
    • Include un nuovo plug-in del modulo delle funzionalità per supportare Android Instant Apps e l' SDK Android Instant Apps (che puoi scaricare utilizzando SDK Manager). Per scoprire di più sulla creazione di moduli di funzionalità con il nuovo plug-in, leggi Struttura di un'app istantanea con più funzionalità.
    • Supporto integrato per l'utilizzo di determinate funzionalità del linguaggio Java 8 e delle librerie Java 8. Jack è ora deprecato e non più necessario e devi prima disattivarlo per utilizzare il supporto migliorato di Java 8 integrato nella toolchain predefinita. Per maggiori informazioni, leggi Utilizzare le funzionalità del linguaggio Java 8.
    • È stato aggiunto il supporto per l'esecuzione di test con Android Test Orchestrator, che consente di eseguire ogni test dell'app all'interno della propria chiamata di Instrumentation. Poiché ogni test viene eseguito nella propria istanza di Instrumentation, qualsiasi stato condiviso tra i test non si accumula sulla CPU o sulla memoria del dispositivo. Inoltre, anche se un test si arresta in modo anomalo, viene interrotta solo la relativa istanza di Instrumentation, quindi gli altri test vengono comunque eseguiti.

      • È stato aggiunto testOptions.execution per determinare se utilizzare l'orchestrazione dei test sul dispositivo. Se vuoi utilizzare Android Test Orchestrator, devi specificare ANDROID_TEST_ORCHESTRATOR, come mostrato di seguito. Per impostazione predefinita, questa proprietà è impostata su HOST, che disattiva l'orchestrazione sul dispositivo ed è il metodo standard di esecuzione dei test.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • La nuova configurazione delle dipendenze androidTestUtil ti consente di installare un altro APK di test helper prima di eseguire i test di strumentazione, come Android Test Orchestrator:

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • È stato aggiunto testOptions.unitTests.includeAndroidResources per supportare i test unitari che richiedono risorse Android, come Robolectric. Quando imposti questa proprietà su true, il plug-in esegue l'unione di risorse, asset e manifest prima di eseguire i test unitari. I test possono quindi ispezionare com/android/tools/test_config.properties nel classpath per le seguenti chiavi:

      • android_merged_assets: il percorso assoluto della directory degli asset uniti.

        Nota: per i moduli della libreria, gli asset uniti non contengono gli asset delle dipendenze (vedi problema #65550419).

      • android_merged_manifest: il percorso assoluto del file manifest unito.

      • android_merged_resources: il percorso assoluto della directory delle risorse unite, che contiene tutte le risorse del modulo e di tutte le relative dipendenze.

      • android_custom_package: il nome del pacchetto della classe R finale. Se modifichi dinamicamente l'ID applicazione, questo nome del pacchetto potrebbe non corrispondere all'attributo package nel manifest dell'app.

    • Supporto per i caratteri come risorse (una nuova funzionalità introdotta in Android 8.0 (livello API 26)).
    • Supporto per APK specifici per lingua con Android Instant Apps SDK 1.1 e versioni successive.
    • Ora puoi modificare la directory di output per il progetto di build nativa esterna, come mostrato di seguito:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Ora puoi utilizzare CMake 3.7 o versioni successive durante la creazione di progetti nativi da Android Studio.
    • La nuova configurazione delle dipendenze lintChecks ti consente di creare un file JAR che definisce regole lint personalizzate e di pacchettizzarlo nei progetti AAR e APK.

      Le regole lint personalizzate devono appartenere a un progetto separato che restituisce un singolo file JAR e include solo dipendenze compileOnly. Altri moduli di app e librerie possono quindi dipendere dal tuo progetto lint utilizzando la configurazione lintChecks:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Modifiche al comportamento

    • Il plug-in Android 3.0.0 rimuove alcune API e la build non funzionerà se le utilizzi. Ad esempio, non puoi più utilizzare l'API Variants per accedere agli oggetti outputFile() o utilizzare processManifest.manifestOutputFile() per ottenere il file manifest per ogni variante. Per saperne di più, leggi Modifiche all'API.
    • Non è più necessario specificare una versione per gli strumenti di compilazione (quindi ora puoi rimuovere la proprietà android.buildToolsVersion). Per impostazione predefinita, il plug-in utilizza automaticamente la versione minima richiesta degli strumenti di compilazione per la versione del plug-in Android che stai utilizzando.
    • Ora puoi attivare/disattivare la compressione PNG nel blocco buildTypes, come mostrato di seguito. La compressione PNG è attivata per impostazione predefinita per tutte le build, ad eccezione delle build di debug, perché aumenta i tempi di compilazione per i progetti che includono molti file PNG. Pertanto, per migliorare i tempi di compilazione per altri tipi di build, devi disattivare la compressione PNG o convertire le immagini in WebP.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Il plug-in Android ora crea automaticamente target eseguibili che configuri nei tuoi progetti CMake esterni.
    • Ora devi aggiungere processori di annotazioni al classpath del processore utilizzando la configurazione delle dipendenze annotationProcessor.
    • L'utilizzo della proprietà ndkCompile ritirata è ora più limitato. Ti consigliamo invece di eseguire la migrazione all'utilizzo di CMake o ndk-build per compilare il codice nativo che vuoi includere nel tuo APK. Per saperne di più, leggi Eseguire la migrazione da ndkcompile.

    3.0.0 (ottobre 2017)

    Il plug-in Android per Gradle 3.0.0 include una serie di modifiche volte a risolvere i problemi di prestazioni dei progetti di grandi dimensioni.

    Ad esempio, in un progetto scheletro di esempio con circa 130 moduli e un numero elevato di dipendenze esterne (ma senza codice o risorse), puoi riscontrare miglioramenti delle prestazioni simili ai seguenti:

    Versione del plug-in Android + versione di Gradle Plug-in Android 2.2.0 + Gradle 2.14.1 Plug-in Android 2.3.0 + Gradle 3.3 Plug-in Android 3.0.0 + Gradle 4.1
    Configurazione (ad es. esecuzione di ./gradlew --help) ~2 minuti ~9 s ~2,5 s
    Modifica di una riga di Java (modifica dell'implementazione) ~2 min 15 sec ~29 s ~6,4 s

    Alcune di queste modifiche interrompono le build esistenti. Pertanto, prima di utilizzare il nuovo plug-in, valuta l'impegno necessario per eseguire la migrazione del progetto.

    Se non noti i miglioramenti delle prestazioni descritti sopra, segnala un bug e includi una traccia della build utilizzando Gradle Profiler.

    Questa versione del plug-in Android richiede quanto segue:

    • Gradle 4.1 o versioni successive. Per saperne di più, leggi la sezione sull'aggiornamento di Gradle.
    • Strumenti di creazione 26.0.2 o versioni successive. Con questo aggiornamento, non è più necessario specificare una versione per gli strumenti di compilazione: il plug-in utilizza la versione minima richiesta per impostazione predefinita. Pertanto, ora puoi rimuovere la proprietà android.buildToolsVersion.

    3.0.1 (novembre 2017)

    Si tratta di un aggiornamento secondario per supportare Android Studio 3.0.1 e include correzioni di bug e miglioramenti delle prestazioni generali.

    Ottimizzazioni

    • Migliore parallelismo per i progetti multimodulo tramite un grafico delle attività con granularità fine.
    • Quando apporti modifiche alla dipendenza, Gradle esegue build più veloci non ricompilando i moduli che non hanno accesso all'API della dipendenza. Devi limitare le dipendenze che espongono le proprie API ad altri moduli utilizzando le nuove configurazioni delle dipendenze di Gradle: implementation, api, compileOnly, e runtimeOnly.
    • Velocità di compilazione incrementale più rapida grazie al dexing per classe. Ogni classe viene ora compilata in file DEX separati e vengono ricompilate solo le classi modificate. Dovresti anche aspettarti velocità di compilazione migliorate per le app che impostano minSdkVersion su 20 o meno e utilizzano multi-dex legacy.
    • Velocità di compilazione migliorata grazie all'ottimizzazione di alcune attività per l'utilizzo di output memorizzati nella cache. Per usufruire di questa ottimizzazione, devi prima attivare la cache di build Gradle.
    • Elaborazione incrementale delle risorse migliorata utilizzando AAPT2, ora abilitato per impostazione predefinita. Se riscontri problemi durante l'utilizzo di AAPT2, segnala un bug. Puoi anche disattivare AAPT2 impostando android.enableAapt2=false nel file gradle.properties e riavviando il daemon Gradle eseguendo ./gradlew --stop dalla riga di comando.

    Nuove funzionalità

    • Gestione delle dipendenze in base alle varianti. Quando crei una determinata variante di un modulo, il plug-in ora corrisponde automaticamente alle varianti delle dipendenze del modulo della libreria locale alla variante del modulo che stai creando.
    • Include un nuovo plug-in del modulo delle funzionalità per supportare Android Instant Apps e l' SDK Android Instant Apps (che puoi scaricare utilizzando SDK Manager). Per scoprire di più sulla creazione di moduli di funzionalità con il nuovo plug-in, leggi Struttura di un'app istantanea con più funzionalità.
    • Supporto integrato per l'utilizzo di determinate funzionalità del linguaggio Java 8 e delle librerie Java 8. Jack è ora deprecato e non più necessario e devi prima disattivarlo per utilizzare il supporto migliorato di Java 8 integrato nella toolchain predefinita. Per maggiori informazioni, leggi Utilizzare le funzionalità del linguaggio Java 8.
    • È stato aggiunto il supporto per l'esecuzione di test con Android Test Orchestrator, che consente di eseguire ogni test dell'app all'interno della propria chiamata di Instrumentation. Poiché ogni test viene eseguito nella propria istanza di Instrumentation, qualsiasi stato condiviso tra i test non si accumula sulla CPU o sulla memoria del dispositivo. Inoltre, anche se un test si arresta in modo anomalo, viene interrotta solo la relativa istanza di Instrumentation, quindi gli altri test vengono comunque eseguiti.

      • È stato aggiunto testOptions.execution per determinare se utilizzare l'orchestrazione dei test sul dispositivo. Se vuoi utilizzare Android Test Orchestrator, devi specificare ANDROID_TEST_ORCHESTRATOR, come mostrato di seguito. Per impostazione predefinita, questa proprietà è impostata su HOST, che disattiva l'orchestrazione sul dispositivo ed è il metodo standard di esecuzione dei test.

      Groovy

              android {
                testOptions {
                  execution 'ANDROID_TEST_ORCHESTRATOR'
                }
              }
              

      Kotlin

              android {
                testOptions {
                  execution = "ANDROID_TEST_ORCHESTRATOR"
                }
              }
              
    • La nuova configurazione delle dipendenze androidTestUtil ti consente di installare un altro APK di test helper prima di eseguire i test di strumentazione, come Android Test Orchestrator:

      Groovy

              dependencies {
                androidTestUtil 'com.android.support.test:orchestrator:1.0.0'
                ...
              }
              

      Kotlin

              dependencies {
                androidTestUtil("com.android.support.test:orchestrator:1.0.0")
                ...
              }
              
    • È stato aggiunto testOptions.unitTests.includeAndroidResources per supportare i test unitari che richiedono risorse Android, come Robolectric. Quando imposti questa proprietà su true, il plug-in esegue l'unione di risorse, asset e manifest prima di eseguire i test unitari. I test possono quindi ispezionare com/android/tools/test_config.properties nel classpath per le seguenti chiavi:

      • android_merged_assets: il percorso assoluto della directory degli asset uniti.

        Nota: per i moduli della libreria, gli asset uniti non contengono gli asset delle dipendenze (vedi problema #65550419).

      • android_merged_manifest: il percorso assoluto del file manifest unito.

      • android_merged_resources: il percorso assoluto della directory delle risorse unite, che contiene tutte le risorse del modulo e di tutte le relative dipendenze.

      • android_custom_package: il nome del pacchetto della classe R finale. Se modifichi dinamicamente l'ID applicazione, questo nome del pacchetto potrebbe non corrispondere all'attributo package nel manifest dell'app.

    • Supporto per i caratteri come risorse (una nuova funzionalità introdotta in Android 8.0 (livello API 26)).
    • Supporto per APK specifici per lingua con Android Instant Apps SDK 1.1 e versioni successive.
    • Ora puoi modificare la directory di output per il progetto di build nativa esterna, come mostrato di seguito:

      Groovy

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory "./outputs/cmake"
                      }
                  }
              }
              

      Kotlin

              android {
                  ...
                  externalNativeBuild {
                      // For ndk-build, instead use the ndkBuild block.
                      cmake {
                          ...
                          // Specifies a relative path for outputs from external native
                          // builds. You can specify any path that's not a subdirectory
                          // of your project's temporary build/ directory.
                          buildStagingDirectory = "./outputs/cmake"
                      }
                  }
              }
              
    • Ora puoi utilizzare CMake 3.7 o versioni successive durante la creazione di progetti nativi da Android Studio.
    • La nuova configurazione delle dipendenze lintChecks ti consente di creare un file JAR che definisce regole lint personalizzate e di pacchettizzarlo nei progetti AAR e APK.

      Le regole lint personalizzate devono appartenere a un progetto separato che restituisce un singolo file JAR e include solo dipendenze compileOnly. Altri moduli di app e librerie possono quindi dipendere dal tuo progetto lint utilizzando la configurazione lintChecks:

      Groovy

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks project(':lint-checks')
              }
              

      Kotlin

              dependencies {
                  // This tells the Gradle plugin to build ':lint-checks' into a lint.jar file
                  // and package it with your module. If the module is an Android library,
                  // other projects that depend on it automatically use the lint checks.
                  // If the module is an app, lint includes these rules when analyzing the app.
                  lintChecks(project(":lint-checks"))
              }
              

    Modifiche al comportamento

    • Il plug-in Android 3.0.0 rimuove alcune API e la build non funzionerà se le utilizzi. Ad esempio, non puoi più utilizzare l'API Variants per accedere agli oggetti outputFile() o utilizzare processManifest.manifestOutputFile() per ottenere il file manifest per ogni variante. Per saperne di più, leggi Modifiche all'API.
    • Non è più necessario specificare una versione per gli strumenti di compilazione (quindi ora puoi rimuovere la proprietà android.buildToolsVersion). Per impostazione predefinita, il plug-in utilizza automaticamente la versione minima richiesta degli strumenti di compilazione per la versione del plug-in Android che stai utilizzando.
    • Ora puoi attivare/disattivare la compressione PNG nel blocco buildTypes, come mostrato di seguito. La compressione PNG è attivata per impostazione predefinita per tutte le build, ad eccezione delle build di debug, perché aumenta i tempi di compilazione per i progetti che includono molti file PNG. Pertanto, per migliorare i tempi di compilazione per altri tipi di build, devi disattivare la compressione PNG o convertire le immagini in WebP.

      Groovy

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  crunchPngs false
                }
              }
            }
            

      Kotlin

            android {
              buildTypes {
                release {
                  // Disables PNG crunching for the release build type.
                  isCrunchPngs = false
                }
              }
            }
            
    • Il plug-in Android ora crea automaticamente target eseguibili che configuri nei tuoi progetti CMake esterni.
    • Ora devi aggiungere processori di annotazioni al classpath del processore utilizzando la configurazione delle dipendenze annotationProcessor.
    • L'utilizzo della proprietà ndkCompile ritirata è ora più limitato. Ti consigliamo invece di eseguire la migrazione all'utilizzo di CMake o ndk-build per compilare il codice nativo che vuoi includere nel tuo APK. Per saperne di più, leggi Eseguire la migrazione da ndkcompile.

    2.3.0 (febbraio 2017)

    2.3.3 (giugno 2017)

    Si tratta di un aggiornamento secondario che aggiunge la compatibilità con Android Studio 2.3.3.

    2.3.2 (maggio 2017)

    Si tratta di un aggiornamento secondario che aggiunge la compatibilità con Android Studio 2.3.2.

    2.3.1 (aprile 2017)

    Si tratta di un aggiornamento secondario del plug-in Android 2.3.0 che risolve un problema per cui alcuni dispositivi Android fisici non funzionavano correttamente con Instant Run (vedi Issue #235879).

    Dipendenze:
    Novità:
    • Utilizza Gradle 3.3, che include miglioramenti delle prestazioni e nuove funzionalità. Per maggiori dettagli, consulta le note di rilascio di Gradle.
    • Build cache: memorizza determinati output generati dal plug-in Android durante la creazione del progetto (ad esempio AAR non pacchettizzati e dipendenze remote pre-dexed). Le build pulite sono molto più veloci quando utilizzano la cache, perché il sistema di compilazione può semplicemente riutilizzare i file memorizzati nella cache durante le build successive, invece di ricrearli. I progetti che utilizzano il plug-in Android 2.3.0 e versioni successive utilizzano la cache di build per impostazione predefinita. Per saperne di più, leggi Migliorare la velocità di build con la cache di build.
      • Include un'attività cleanBuildCache che svuota la cache di build.
      • Se utilizzi la versione sperimentale della build cache (inclusa nelle versioni precedenti del plug-in), devi aggiornare il plug-in alla versione più recente.
    Modifiche:

    2.2.0 (settembre 2016)

    Dipendenze:
    Novità:
    • Utilizza Gradle 2.14.1, che include miglioramenti delle prestazioni e nuove funzionalità e corregge una vulnerabilità di sicurezza che consente l'escalation dei privilegi locali quando si utilizza il daemon Gradle. Per maggiori dettagli, consulta le note di rilascio di Gradle.
    • Utilizzando il linguaggio specifico del dominio externalNativeBuild {}, Gradle ora ti consente di collegarti alle tue origini native e compilare librerie native utilizzando CMake o ndk-build. Dopo aver creato le librerie native, Gradle le inserisce nel tuo APK. Per scoprire di più sull'utilizzo di CMake e ndk-build con Gradle, leggi Aggiungere codice C e C++ al tuo progetto.
    • Quando esegui una build dalla riga di comando, Gradle ora tenta di scaricare automaticamente eventuali componenti SDK o aggiornamenti mancanti da cui dipende il tuo progetto. Per saperne di più, leggi Download automatico dei pacchetti mancanti con Gradle.
    • Una nuova funzionalità di memorizzazione nella cache sperimentale consente a Gradle di velocizzare i tempi di compilazione eseguendo il pre-dexing, l'archiviazione e il riutilizzo delle versioni pre-dexed delle tue librerie. Per scoprire di più sull'utilizzo di questa funzionalità sperimentale, leggi la guida Build Cache.
    • Migliora il rendimento della build adottando una nuova pipeline di packaging predefinita che gestisce la compressione, la firma e l'allineamento zip in un'unica attività. Puoi tornare a utilizzare gli strumenti di creazione dei pacchetti precedenti aggiungendo android.useOldPackaging=true al tuo file gradle.properties. Quando utilizzi il nuovo strumento di packaging, l'attività zipalignDebug non è disponibile. Tuttavia, puoi crearne uno chiamando il metodo createZipAlignTask(String taskName, File inputFile, File outputFile).
    • La firma dell'APK ora utilizza lo schema di firma dell'APK v2 oltre alla tradizionale firma JAR. Tutte le piattaforme Android accettano gli APK risultanti. Qualsiasi modifica a questi APK dopo la firma invalida le firme v2 e impedisce l'installazione su un dispositivo. Per disattivare questa funzionalità, aggiungi quanto segue al file build.gradle a livello di modulo:

      Groovy

      android {
        ...
        signingConfigs {
          config {
            ...
            v2SigningEnabled false
          }
        }
      }
            

      Kotlin

      android {
        ...
        signingConfigs {
          create("config") {
            ...
            v2SigningEnabled = false
          }
        }
      }
            
    • Per le build multidex, ora puoi utilizzare le regole ProGuard per determinare quali classi Gradle deve compilare nel file DEX principale della tua app. Poiché il sistema Android carica prima il file DEX principale all'avvio dell'app, puoi dare la priorità a determinate classi all'avvio compilando il file DEX principale. Dopo aver creato un file di configurazione ProGuard specifico per il tuo file DEX principale, passa il percorso del file di configurazione a Gradle utilizzando buildTypes.multiDexKeepProguard. L'utilizzo di questo DSL è diverso dall'utilizzo di buildTypes.proguardFiles, che fornisce regole ProGuard generali per la tua app e non specifica le classi per il file DEX principale.
    • Aggiunge il supporto del flag android:extractNativeLibs, che può ridurre le dimensioni dell'app quando la installi su un dispositivo. Quando imposti questo flag su false nell'elemento <application> del file manifest dell'app, Gradle pacchettizza le versioni non compresse e allineate delle librerie native con l'APK. In questo modo PackageManager non copia le librerie native dall'APK al file system del dispositivo durante l'installazione e ha l'ulteriore vantaggio di ridurre le dimensioni degli aggiornamenti delta dell'app.
    • Ora puoi specificare versionNameSuffix e applicationIdSuffix per le varianti di prodotto. (Problema 59614)
    Modifiche:
    • getDefaultProguardFile ora restituisce i file ProGuard predefiniti forniti dal plug-in Android per Gradle e non utilizza più quelli nell'SDK Android.
    • Miglioramento delle prestazioni e delle funzionalità del compilatore Jack:
      • Jack ora supporta la copertura dei test Jacoco quando imposti testCoverageEnabled su true.
      • Supporto migliorato per i processori di annotazioni. I processori di annotazioni nel classpath, ad esempio le dipendenze compile, vengono applicati automaticamente alla build. Puoi anche specificare un processore di annotazioni nella build e passare gli argomenti utilizzando il DSL javaCompileOptions.annotationProcessorOptions {} nel file build.gradle a livello di modulo:

        Groovy

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className 'com.example.MyProcessor'
                // Arguments are optional.
                arguments = [ foo : 'bar' ]
              }
            }
          }
        }
            

        Kotlin

        android {
          ...
          defaultConfig {
            ...
            javaCompileOptions {
              annotationProcessorOptions {
                className = "com.example.MyProcessor"
                // Arguments are optional.
                arguments(mapOf(foo to "bar"))
              }
            }
          }
        }
            

        Se vuoi applicare un processore di annotazioni in fase di compilazione ma non includerlo nell'APK, utilizza l'ambito della dipendenza annotationProcessor:

        Groovy

        dependencies {
            compile 'com.google.dagger:dagger:2.0'
            annotationProcessor 'com.google.dagger:dagger-compiler:2.0'
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            

        Kotlin

        dependencies {
            implementation("com.google.dagger:dagger:2.0")
            annotationProcessor("com.google.dagger:dagger-compiler:2.0")
           // or use buildVariantAnnotationProcessor to target a specific build variant
        }
            
      • Per un elenco dei parametri che puoi impostare, esegui questo comando dalla riga di comando:

        java -jar /build-tools/jack.jar --help-properties
        
      • Per impostazione predefinita, se la dimensione dell'heap del daemon Gradle è di almeno 1,5 GB, Jack viene eseguito nello stesso processo di Gradle. Per regolare le dimensioni dell'heap del daemon, aggiungi quanto segue al tuo file gradle.properties:
        # This sets the daemon heap size to 1.5GB.
        org.gradle.jvmargs=-Xmx1536M
        

    2.1.0 (aprile 2016)

    2.1.3 (agosto 2016)

    Questo aggiornamento richiede Gradle 2.14.1 e versioni successive. Gradle 2.14.1 include miglioramenti delle prestazioni, nuove funzionalità e un'importante correzione della sicurezza. Per maggiori dettagli, consulta le note di rilascio di Gradle.

    Dipendenze:
    Novità:
    • È stato aggiunto il supporto per l'anteprima per gli sviluppatori N, JDK 8 e le funzionalità del linguaggio Java 8 utilizzando la toolchain Jack. Per saperne di più, leggi la guida all'anteprima di N.

      Nota: Instant Run al momento non funziona con Jack e verrà disattivato durante l'utilizzo della nuova toolchain. Devi utilizzare Jack solo se stai sviluppando per l'anteprima N e vuoi utilizzare le funzionalità del linguaggio Java 8 supportate.

    • È stato aggiunto il supporto predefinito per la compilazione Java incrementale per ridurre il tempo di compilazione durante lo sviluppo. A questo scopo, ricompila solo le parti dell'origine che sono state modificate o che devono essere ricompilate. Per disattivare questa funzionalità, aggiungi il seguente codice al file build.gradle a livello di modulo:

      Groovy

      android {
        ...
        compileOptions {
          incremental false
        }
      }

      Kotlin

      android {
        ...
        compileOptions {
          incremental = false
        }
      }
    • È stato aggiunto il supporto per l'elaborazione dexing in corso, che esegue il dexing all'interno della build anziché in processi VM esterni separati. In questo modo non solo le build incrementali sono più veloci, ma anche le build complete. La funzionalità è abilitata per impostazione predefinita per i progetti che hanno impostato la dimensione massima dell'heap del daemon Gradle su almeno 2048 MB. Per farlo, includi quanto segue nel file gradle.properties del progetto:

      ```none org.gradle.jvmargs = -Xmx2048m ```

      Se hai definito un valore per javaMaxHeapSize nel file build.gradle a livello di modulo, devi impostare org.gradle.jvmargs sul valore di javaMaxHeapSize + 1024 MB. Ad esempio, se hai impostato javaMaxHeapSize su "2048m", devi aggiungere quanto segue al file gradle.properties del progetto:

      ```none org.gradle.jvmargs = -Xmx3072m ```

      Per disattivare la dexing in corso, aggiungi il seguente codice al file build.gradle a livello di modulo:

      Groovy

      android {
        ...
        dexOptions {
            dexInProcess false
        }
      }

      Kotlin

      android {
        ...
        dexOptions {
            dexInProcess = false
        }
      }

    2.0.0 (aprile 2016)

    Dipendenze:
    Novità:
    • Consente l'esecuzione immediata supportando l'inserimento di bytecode e l'invio di aggiornamenti di codice e risorse a un'app in esecuzione sull'emulatore o su un dispositivo fisico.
    • Aggiunto il supporto per le build incrementali, anche quando l'app non è in esecuzione. I tempi di compilazione completi vengono migliorati inviando modifiche incrementali tramite Android Debug Bridge al dispositivo connesso.
    • È stato aggiunto maxProcessCount per controllare il numero di processi dex worker che possono essere generati contemporaneamente. Il seguente codice, nel file build.gradle a livello di modulo, imposta il numero massimo di processi simultanei su 4:

      Groovy

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }

      Kotlin

      android {
        ...
        dexOptions {
          maxProcessCount = 4 // this is the default value
        }
      }
        </li>
      
        <li>Added an experimental code shrinker to support pre-dexing and reduce re-dexing
        of dependencies, which are not supported with Proguard. This improves the build
        speed of your debug build variant. Because the experimental shrinker does not
        support optimization and obfuscation, you should enable Proguard for your
        release builds. To enable the experimental shrinker for your debug builds, add
        the following to your module-level <code>build.gradle</code> file:
      

      Groovy

      android {
        ...
        buildTypes {
          debug {
            minifyEnabled true
            useProguard false
          }
          release {
            minifyEnabled true
            useProguard true // this is a default setting
          }
        }
      }

      Kotlin

      android {
        ...
        buildTypes {
          getByName("debug") {
            minifyEnabled = true
            useProguard = false
          }
          getByName("release") {
            minifyEnabled = true
            useProguard = true // this is a default setting
          }
        }
      }
        </li>
      
        <li>Added logging support and improved performance for the resource shrinker.
        The resource shrinker now logs all of its operations into a <code>resources.txt</code>
        file located in the same folder as the Proguard log files.
        </li>
      </ul>
      

    Comportamento modificato:
    • Quando minSdkVersion è impostato su 18 o su un valore superiore, la firma dell'APK utilizza SHA256.
    •   <li>DSA and ECDSA keys can now sign APK packages.
      
          <p class="note">
            <strong>Note:</strong> The <a href=
            "/training/articles/keystore.html">Android keystore</a> provider no
            longer supports <a href=
            "/about/versions/marshmallow/android-6.0-changes.html#behavior-keystore">
            DSA keys on Android 6.0</a> (API level 23) and higher.
          </p>
      
        </li>
      </ul>
      

    Problemi risolti:
    • È stato risolto un problema che causava la duplicazione delle dipendenze AAR sia nelle configurazioni di build di test sia in quelle principali.

    Plug-in Android per Gradle, revisione 1.5.0 (novembre 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato integrato il plug-in Data Binding nel plug-in Android per Gradle. Per attivarlo, aggiungi il seguente codice a ogni file build.gradle per progetto che utilizza il plug-in:
    • android {
          dataBinding {
              enabled = true
          }
      }
              
      android {
          dataBinding {
              enabled = true
          }
      }
              
    • È stata aggiunta una nuova API Transform per consentire ai plug-in di terze parti di manipolare i file .class compilati prima che vengano convertiti in file .dex. L'API Transform semplifica l'inserimento di manipolazioni di classi personalizzate, offrendo al contempo maggiore flessibilità per quanto riguarda gli elementi che puoi manipolare. Per inserire una trasformazione in una build, crea una nuova classe che implementi una delle interfacce Transform e registrala con android.registerTransform(theTransform) o android.registerTransform(theTransform, dependencies). Non è necessario collegare le attività. Tieni presente quanto segue in merito all'API Transform:
      • Una trasformazione può essere applicata a uno o più dei seguenti elementi: il progetto corrente, i sottoprogetti e le librerie esterne.
      • Una trasformazione deve essere registrata a livello globale, il che la applica a tutte le varianti.
      • L'elaborazione del codice interno, tramite la libreria Java Code Coverage (JaCoCo), ProGuard e MultiDex, ora utilizza l'API Transform. Tuttavia, Java Android Compiler Kit (Jack) non utilizza questa API: solo il percorso del codice javac/dx.
      • Gradle esegue le trasformazioni in questo ordine: JaCoCo, plug-in di terze parti, ProGuard. L'ordine di esecuzione dei plug-in di terze parti corrisponde all'ordine in cui le trasformazioni vengono aggiunte dai plug-in di terze parti; gli sviluppatori di plug-in di terze parti non possono controllare l'ordine di esecuzione delle trasformazioni tramite un'API.
    • È stato ritirato il getter dex dalla classe ApplicationVariant. Non puoi più accedere all'attività Dex tramite l'API Variant perché ora viene eseguita tramite una trasformazione. Al momento non esiste un sostituto per il controllo del processo dex.
    • Supporto incrementale fisso per gli asset.
    • Supporto MultiDex migliorato rendendolo disponibile per i progetti di test e i test ora hanno automaticamente la dipendenza com.android.support:multidex-instrumentation.
    • È stata aggiunta la possibilità di non riuscire a eseguire correttamente una build Gradle e di segnalare la causa dell'errore sottostante quando la build Gradle richiama attività asincrone e si verifica un errore nel processo di worker.
    • È stato aggiunto il supporto per la configurazione di un'ABI (Application Binary Interface) specifica nelle varianti che contengono più ABI.
    • Aggiunto il supporto per un elenco separato da virgole di numeri di serie dei dispositivi per la variabile di ambiente ANDROID_SERIAL durante l'installazione o l'esecuzione dei test.
    • È stato corretto un errore di installazione sui dispositivi con Android 5.0 (livello API 20) e versioni successive quando il nome dell'APK contiene uno spazio.
    • Risolti vari problemi relativi all'output di errore di Android Asset Packaging Tool (AAPT).
    • Aggiunto il supporto dell'instrumentazione incrementale JaCoCo per build incrementali più veloci. Il plug-in Android per Gradle ora richiama direttamente lo strumento di instrumentazione JaCoCo. Per forzare una versione più recente dello strumento di instrumentazione JaCoCo, devi aggiungerlo come dipendenza dello script di build.
    • È stato corretto il supporto di JaCoCo in modo che ignori i file che non sono classi.
    • Aggiunto il supporto dei disegni vettoriali per la generazione di PNG in fase di compilazione per la compatibilità con le versioni precedenti. Il plug-in Android per Gradle genera PNG per ogni risorsa grafica vettoriale trovata in una directory di risorse che non specifica una versione dell'API o specifica un attributo android:minSdkVersion pari o inferiore a 20 nell'elemento <uses-sdk> nel manifest dell'app. Puoi impostare le densità PNG utilizzando la proprietà generatedDensities nelle sezioni defaultConfig o productFlavor di un file build.gradle.
    • È stata aggiunta la condivisione di android.jar simulabile, che il plug-in genera una sola volta e utilizza per i test unitari. Ora lo condividono più moduli, ad esempio app e lib. Elimina $rootDir/build per rigenerarlo.
    • È stata modificata l'elaborazione delle risorse Java in modo che avvenga prima delle attività di offuscamento anziché durante il packaging dell'APK. Questa modifica consente alle attività di offuscamento di avere la possibilità di adattare le risorse Java dopo l'offuscamento dei pacchetti.
    • È stato risolto un problema relativo all'utilizzo del codice Java Native Interface (JNI) nel plug-in della libreria sperimentale.
    • È stata aggiunta la possibilità di impostare la versione della piattaforma separatamente dall'attributo android:compileSdkVersion nel plug-in della libreria sperimentale.

    Plug-in Android per Gradle, revisione 1.3.1 (agosto 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato corretto il problema relativo all'attività ZipAlign per utilizzare correttamente l'output dell'attività precedente quando si utilizza un nome file personalizzato.
    • È stato corretto il packaging di Renderscript con l'NDK.
    • È stato mantenuto il supporto per l'attività di build createDebugCoverageReport.
    • È stato corretto il supporto per l'utilizzo personalizzato della proprietà archiveBaseName nel file di build build.gradle.
    • È stato corretto l'avviso Invalid ResourceType lint causato dalla ricerca di annotazioni del metodo dei parametri durante l'esecuzione di lint al di fuori di Android Studio.

    Plug-in Android per Gradle, revisione 1.3.0 (luglio 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato aggiunto il supporto per la proprietà com.android.build.threadPoolSize per controllare le dimensioni del pool di thread dell'attività Android dal file gradle.properties o dalla riga di comando. L'esempio seguente imposta questa proprietà su 4.

              
              -Pcom.android.build.threadPoolSize=4
              
            
    • Imposta il comportamento di build predefinito in modo da escludere i file LICENSE e LICENSE.txt dagli APK. Per includere questi file in un APK, rimuovili dalla proprietà packagingOptions.excludes nel file build.gradle. Ad esempio:
      android {
            packagingOptions.excludes = []
          }
            
      android {
            packagingOptions.excludes.clear()
          }
          
    • È stata aggiunta l'attività sourceSets per esaminare l'insieme di tutti i set di origini disponibili.
    • Supporto avanzato dei test unitari per riconoscere le cartelle di origine di varianti di build e più versioni. Ad esempio, per testare un'app con più varianti flavor1 e flavorA con il tipo di build Debug, i set di origini di test sono:
      • test
      • testFlavor1
      • testFlavorA
      • testFlavor1FlavorA
      • testFlavor1FlavorADebug

      I test Android riconoscevano già le cartelle di origine multivariante.

    • Supporto migliorato dei test unitari per:
      • Esegui javac sulle origini principali e di test, anche se la proprietà useJack è impostata su true nel file di build.
      • Riconoscere correttamente le dipendenze per ogni tipo di build.
    • È stato aggiunto il supporto per la specifica degli argomenti di test-runner di strumentazione dalla riga di comando. Ad esempio:
      ./gradlew connectedCheck \
         -Pandroid.testInstrumentationRunnerArguments.size=medium \
         -Pandroid.testInstrumentationRunnerArguments.class=TestA,TestB
              
    • È stato aggiunto il supporto per parametri AAPT (Android Asset Packaging Tool) aggiuntivi arbitrari nel file build.gradle. Ad esempio:

      android {
          aaptOptions {
            additionalParameters "--custom_option", "value"
          }
      }
            
      android {
          aaptOptions {
            additionalParameters += listOf("--custom_option", "value")
          }
      }
            
    • È stato aggiunto il supporto per un modulo APK di test come modulo di test separato, utilizzando le proprietà targetProjectPath e targetVariant per impostare il percorso dell'APK e la variante di destinazione.

      Nota:un modulo APK di test non supporta le varianti del prodotto e può avere come target una sola variante. Inoltre, Jacoco non è ancora supportato.

    • È stata aggiunta la convalida del nome della risorsa prima dell'unione delle risorse.
    • Quando crei un pacchetto AAR (Android ARchive) per i moduli della libreria, non fornire un segnaposto @{applicationId} automatico nelle impostazioni di unione dei manifest. Utilizza invece un segnaposto diverso, ad esempio @{libApplicationId}, e fornisci un valore se vuoi includere gli ID applicazione nella raccolta di archiviazione.

    Plug-in Android per Gradle, revisione 1.2.0 (aprile 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • Supporto avanzato per l'esecuzione di test delle unità con Gradle.
      • È stato aggiunto il supporto per includere risorse in stile Java nel classpath quando esegui test unitari direttamente da Gradle.
      • Aggiunto il supporto delle dipendenze dei test unitari per gli artefatti Android Archive (AAR).
      • È stato aggiunto il supporto per la proprietà unitTestVariants in modo che le varianti del test unitario possano essere manipolate utilizzando il file build.gradle.
      • È stato aggiunto il blocco di codice unitTest.all in testOptions per configurare attività personalizzate per il test dell'unità. Il seguente codice di esempio mostra come aggiungere le impostazioni di configurazione del test delle unità utilizzando questa nuova opzione:
        android {
          testOptions {
            unitTest.all {
              jvmArgs '-XX:MaxPermSize=256m' // Or any other gradle option.
            }
          }
        }
        android {
          testOptions {
            unitTest.all {
              jvmArgs += listOf("-XX:MaxPermSize=256m") // Or any other gradle option.
            }
          }
        }
                    
      • È stata corretta la gestione delle enumerazioni e dei campi delle istanze pubbliche nel packaging del file mockable-android.jar.
      • Sono state corrette le dipendenze delle attività del progetto della libreria in modo che le classi di test vengano ricompilate dopo le modifiche.
    • È stata aggiunta la proprietà testProguardFile per applicare i file ProGuard durante la minimizzazione di un APK di test.
    • È stata aggiunta la proprietà timeOut al blocco di codice adbOptions per impostare il tempo massimo di registrazione per la registrazione dello schermo di Android Debug Bridge.
    • È stato aggiunto il supporto per le risorse a 280 dpi.
    • Prestazioni migliorate durante la valutazione del progetto.

    Plug-in Android per Gradle, revisione 1.1.3 (marzo 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato risolto il problema relativo alle dipendenze duplicate in un'app di test che ha attivato un errore ProGuard.
    • Corretta l'implementazione di Comparator che non rispettava il contratto Comparator JDK e generava un errore JDK 7.

    Plug-in Android per Gradle, revisione 1.1.2 (febbraio 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • Percorso normalizzato durante la creazione di un file JAR simulabile per i test unitari.
    • È stata corretta l'impostazione archivesBaseName nel file build.gradle.
    • È stato corretto l'errore relativo al segnaposto non risolto nell'unione del manifest durante la creazione di un'applicazione di test della libreria.

    Plug-in Android per Gradle, revisione 1.1.1 (febbraio 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • Varianti di build modificate in modo che solo le varianti che includono un'app Wear attivino attività di build specifiche per Wear.
    • Modificati i problemi relativi alle dipendenze in modo che si verifichino in fase di compilazione anziché in fase di debug. Questo comportamento ti consente di eseguire attività di diagnostica (ad esempio "dipendenze") per risolvere il conflitto.
    • È stato corretto il metodo android.getBootClasspath() per restituire un valore.

    Plug-in Android per Gradle, revisione 1.1.0 (febbraio 2015)

    Dipendenze:
    • Gradle 2.2.1 o versioni successive.
    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato aggiunto il supporto per i nuovi test unitari
      • Sono stati attivati i test unitari da eseguire sulla JVM locale rispetto a una versione speciale del file android.jar compatibile con i framework di simulazione più diffusi, ad esempio Mockito.
      • Sono state aggiunte nuove attività di test testDebug, testRelease e testMyFlavorDebug quando si utilizzano le varianti del prodotto.
      • Sono state aggiunte nuove cartelle di origine riconosciute come test unitari: src/test/java/, src/testDebug/java/, src/testMyFlavor/java/.
      • Sono state aggiunte nuove configurazioni nel file build.gradle per dichiarare le dipendenze solo di test, ad esempio, testCompile 'junit:junit:4.11', testMyFlavorCompile 'some:library:1.0'.

        Nota: le dipendenze solo di test non sono attualmente compatibili con Jack (Java Android Compiler Kit).

      • È stata aggiunta l'opzione android.testOptions.unitTests.returnDefaultValues per controllare il comportamento di android.jar simulabile.
    • Test sostituito nei nomi delle attività di test con AndroidTest. Ad esempio, l'attività assembleDebugTest ora è l'attività assembleDebugAndroidTest. Le attività di test delle unità hanno ancora UnitTest nel nome dell'attività, ad esempio assembleDebugUnitTest.
    • File di configurazione ProGuard modificati in modo che non vengano più applicati all'APK di test. Se la riduzione è attivata, ProGuard elabora l'APK di test e applica solo il file di mapping generato durante la riduzione dell'APK principale.
    • Gestione delle dipendenze aggiornata
      • Sono stati risolti i problemi relativi all'utilizzo degli ambiti provided e package.

        Nota: questi ambiti sono incompatibili con i pacchetti AAR (Android ARchive) e causeranno un errore di compilazione con i pacchetti AAR.

      • Risoluzione delle dipendenze modificata per confrontare le dipendenze di un'app in fase di test e dell'app di test. Se viene trovato un artefatto con la stessa versione per entrambe le app, non viene incluso nell'app di test e viene incluso solo nell'app in fase di test. Se viene trovato un artefatto con una versione diversa per entrambe le app, la build non riesce.
    • È stato aggiunto il supporto per il anyDpi qualificatore delle risorse nell'unione delle risorse.
    • Velocità di valutazione e sincronizzazione IDE migliorate per i progetti con un numero elevato di moduli Android.

    Plug-in Android per Gradle, revisione 1.0.1 (gennaio 2015)

    Dipendenze:
    • Gradle 2.2.1 fino alla versione 2.3.x.

      Nota:questa versione del plug-in Android per Gradle non è compatibile con Gradle 2.4 e versioni successive.

    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • È stato risolto il problema relativo all'errore di compilazione Gradle durante l'accesso al modulo extractReleaseAnnotations. (Problema 81638).
    • È stato risolto il problema relativo al passaggio dell'impostazione --no-optimize al bytecode Dalvik Executable (dex) da parte di Disable. (Problema 82662).
    • Sono stati risolti i problemi di unione del file manifest durante l'importazione di librerie con un targetSdkVersion inferiore a 16.
    • È stato risolto il problema di ordinamento della densità quando si utilizza Android Studio con JDK 8.

    Plug-in Android per Gradle, revisione 1.0.0 (dicembre 2014)

    Dipendenze:
    • Gradle 2.2.1 fino alla versione 2.3.x.

      Nota:questa versione del plug-in Android per Gradle non è compatibile con Gradle 2.4 e versioni successive.

    • Build Tools 21.1.1 o versioni successive.
    Note generali:
    • Release iniziale del plug-in.