Android Gradle Plugin 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 le nuove impostazioni e funzionalità predefinite per la visibilità dei pacchetti in Android 11.

Per informazioni dettagliate, consulta le note di rilascio 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 degli 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 dei classpath migliorata: per risolvere le dipendenze dai classpath del runtime e del tempo di compilazione, il plug-in Android Gradle tenta di risolvere alcuni conflitti di versione downstream per le dipendenze che si verificano in più percorsi delle classi.

    Ad esempio, se il classpath del runtime include Library A versione 2.0 e il classpath di compile include la Libreria A versione 1.0, il plug-in aggiorna automaticamente la dipendenza del classpath di compile 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 del classpath di compile alla Libreria A versione 1.0 e verrà visualizzato un errore. Per scoprire di più, consulta Risolvere i conflitti tra i classpath.

  • Compilazione Java incrementale migliorata quando si utilizzano processori di annotazione: questo aggiornamento riduce i tempi di build migliorando il supporto della compilazione Java incrementale quando si utilizzano processori di annotazione.

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

    • Per i progetti che utilizzano Kapt (la maggior parte dei progetti solo per Kotlin e i 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 i processori di annotazione che utilizzi tutti supportano l'elaborazione incrementale delle annotazioni, la compilazione Java incrementale è abilitata per impostazione predefinita. Per monitorare l'adozione incrementale del processore di annotazioni, guarda il video Gradle issue 5277.

      Tuttavia, se uno o più processori di annotazione non supportano build incrementali, la compilazione Java incrementale non è abilitata. Puoi invece includere il seguente flag nel file gradle.properties:

      android.enableSeparateAnnotationProcessing=true
                  

      Se includi questo flag, il plug-in Android Gradle esegue i processori di annotazione in un'attività separata e consente l'esecuzione incrementale dell'attività di compilazione Java.

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

              android.debug.obsoleteApi=true
            

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

  • Puoi eseguire test della strumentazione sui moduli delle caratteristiche dalla riga di comando.

Modifiche del comportamento

  • Configurazione delle attività lazy: il plug-in ora utilizza la nuova API di Gradle per la creazione di attività per evitare di inizializzare e configurare attività non necessarie per completare la build attuale (o 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 di "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 meno recenti nell'API Variants, ad esempio variant.getJavaCompile(), potrebbe comunque forzare la configurazione delle attività. Per assicurarti che la tua build sia ottimizzata per la configurazione di attività lazy, richiama nuovi metodi che restituiscono invece un oggetto TaskProvider, come variant.getJavaCompileProvider().

    Se esegui attività di compilazione personalizzate, scopri come adattarti alla nuova API di creazione di 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 della tua app. Per scoprire di più su R8, leggi questo post del blog dell'Android Developer’s Blog.

  • Generazione più veloce delle classi R per i progetti di libreria: in precedenza, il plug-in Gradle per Android generava un file R.java per ogni dipendenza del progetto e compilava queste classi R insieme alle altre classi dell'app. Il plug-in ora genera direttamente un file JAR contenente direttamente la classe R compilata dell'app, senza prima creare classi R.java intermedie. Questa ottimizzazione potrebbe migliorare notevolmente le prestazioni delle build per i progetti che includono molti sottoprogetti e dipendenze di libreria, nonché migliorare la velocità di indicizzazione in Android Studio.

  • Quando crei un Android App Bundle, gli APK generati dall'app bundle che hanno come target Android 6.0 (livello API 23) o versioni successive ora includono per impostazione predefinita versioni non compresse delle librerie native. Questa ottimizzazione evita la necessità che il dispositivo crei una copia della libreria, riducendo così le dimensioni sul disco della tua app. Se preferisci disabilitare 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 con una variante singola: sincronizzare il progetto con la configurazione di build è un passaggio importante per consentire ad Android Studio di comprendere come è strutturato il 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 per Android per Gradle 3.3.0 o versioni successive. Se soddisfi questi requisiti, l'IDE ti chiede di abilitare l'ottimizzazione quando sincronizzi il progetto. L'ottimizzazione è abilitata per impostazione predefinita anche sui nuovi progetti.

    Per attivare questa ottimizzazione manualmente, 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 Kotlin. Quando abiliti 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 ampliata per supportare NDK. Per scoprire di più, leggi Eseguire automaticamente il download dei pacchetti mancanti con Gradle.

Correzioni di bug

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

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