Plug-in Android per Gradle 3.3.0 (gennaio 2019)

Questa versione del plug-in Android richiede quanto segue:

Versione minima Versione predefinita Note
Gradle 4.10.1 4.10.1 Per saperne di più, consulta la sezione Aggiornare Gradle. Quando utilizzi Gradle 5.0 e versioni successive, la dimensione dell'heap di memoria del daemon Gradle predefinito diminuisce da 1 GB a 512 MB. Ciò potrebbe comportare una regressione del rendimento della build. Per ignorare questa impostazione predefinita, specifica la dimensione dell'heap del daemon Gradle nel file gradle.properties del progetto.
Strumenti di build dell'SDK 28.0.3 28.0.3 Installa o configura gli strumenti di compilazione dell'SDK.

3.3.3 (luglio 2020)

Questo aggiornamento secondario supporta la compatibilità con le nuove impostazioni e funzionalità predefinite 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 del rendimento. Per visualizzare un elenco delle correzioni di bug degne di nota, leggi il post correlato sul blog 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 del rendimento.

Nuove funzionalità

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

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

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

  • Compilazione Java incrementale migliorata quando si utilizzano i processori di annotazioni: questo aggiornamento riduce il tempo di compilazione migliorando il supporto per la compilazione Java incrementale quando si utilizzano i 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 dei progetti ibridi Kotlin-Java): la compilazione Java incrementale è abilitata, anche quando utilizzi l'associazione di dati 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 tutti i processori di annotazioni che utilizzi supportano l'elaborazione incrementale delle annotazioni, la compilazione Java incrementale è abilitata per impostazione predefinita. Per monitorare l'adozione del processore di annotazioni incrementale, consulta il problema 5277 di Gradle.

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

      android.enableSeparateAnnotationProcessing=true
                  

      Quando includi questo flag, il plug-in Android per 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 del progetto:gradle.properties

              android.debug.obsoleteApi=true
            

    Puoi anche abilitare 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à non 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" dell'app.

    La chiamata di alcuni metodi precedenti nell'API Variants, come variant.getJavaCompile(), potrebbe comunque forzare la configurazione delle attività. Per assicurarti che la build sia ottimizzata per la configurazione delle attività lazy, richiama i 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 compilazione, 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 per sviluppatori Android.

  • Generazione più rapida della classe R per i progetti di librerie: in precedenza, il plug-in Android per Gradle generava un file R.java per ogni dipendenza 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 dell'app, senza prima creare classi intermedie R.java. Questa ottimizzazione può migliorare significativamente il rendimento della build per i progetti che includono molti sottoprogetti e dipendenze di librerie e migliorare la velocità di indicizzazione in Android Studio.

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

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

  • Sincronizzazione del progetto a variante singola: Sincronizzazione del progetto con la configurazione di compilazione è 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 abilitare questa ottimizzazione, devi utilizzare Android Studio 3.3 o versioni successive con il plug-in Android per Gradle 3.3.0 o versioni successive. Quando soddisfi questi requisiti, l' IDE ti chiede di abilitare questa ottimizzazione quando sincronizzi il progetto. L' ottimizzazione è abilitata per impostazione predefinita anche sui nuovi progetti.

    Per abilitare manualmente questa ottimizzazione, fai clic su File > Impostazioni > Sperimentale > Gradle (Android Studio > Preferenze > Sperimentale > Gradle su un 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 abiliti l'ottimizzazione per i progetti con contenuti Kotlin, la sincronizzazione di Gradle torna a utilizzare internamente le varianti complete.

  • Download automatico dei pacchetti SDK mancanti: questa funzionalità è stata ampliata per supportare l'NDK. Per saperne di più, consulta la sezione Download automatico dei pacchetti mancanti con Gradle.

Correzioni di bug

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

    • Il processo di compilazione chiama android.support.v8.renderscript.RenderScript anziché la versione AndroidX, nonostante Jetifier sia abilitato
    • Conflitti dovuti a androidx-rs.jar che include in bundle statico annotation.AnyRes
    • Quando utilizzi RenderScript, non devi più impostare manualmente la versione degli strumenti di build nei file build.gradle