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 scoprire di più, consulta la sezione Aggiornare Gradle. Quando utilizzi Gradle 5.0 e versioni successive, la dimensione dell'heap di memoria del daemon Gradle predefinita diminuisce da 1 GB a 512 MB. Ciò potrebbe comportare una regressione del rendimento della compilazione. Per ignorare questa impostazione predefinita, specifica la dimensione dell'heap del daemon Gradle nel file gradle.properties del progetto.
Strumenti di compilazione SDK 28.0.3 28.0.3 Installa o configura gli strumenti di compilazione dell'SDK.

3.3.3 (luglio 2020)

Questo aggiornamento minore supporta la compatibilità con le nuove impostazioni e funzionalità predefinite per la visibilità del pacchetto in Android 11.

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

3.3.2 (marzo 2019)

Questo aggiornamento minore supporta Android Studio 3.3.2 e include varie correzioni di bug e miglioramenti delle prestazioni. Per visualizzare un elenco delle correzioni di bug più importanti, leggi il post correlato nel blog degli aggiornamenti del rilascio.

3.3.1 (febbraio 2019)

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

Nuove funzionalità

  • Sincronizzazione del percorso di classe migliorata: durante la risoluzione delle dipendenze nei percorsi di classe di runtime e compilazione, il plug-in Gradle di Android tenta di correggere determinati conflitti di versione a valle per le dipendenze che compaiono in più percorsi di classe.

    Ad esempio, se il percorso di classe di runtime include la versione 2.0 della libreria A e il percorso di compilazione include la versione 1.0 della libreria A, il plug-in aggiorna automaticamente la dipendenza sul percorso 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 la compilazione include la versione 2.0 della libreria A, il plug-in non esegue il downgrade della dipendenza sul classpath di compilazione alla versione 1.0 della libreria A e verrà visualizzato un errore. Per scoprire di più, consulta Risolvere i conflitti tra i classpath.

  • Miglioramento della compilazione incrementale di Java quando si utilizzano gli elaboratori di annotazioni:questo aggiornamento riduce il tempo di compilazione migliorando il supporto della compilazione incrementale di Java quando si utilizzano gli elaboratori 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 è attivata, anche se utilizzi il binding 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 gli elaboratori 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 incrementali, guarda il problema Gradle 5277.

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

      android.enableSeparateAnnotationProcessing=true
                  

      Quando includi questo flag, il plug-in Gradle per Android esegue gli elaboratori 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 misurazione sui moduli di 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 grafo delle attività di esecuzione). Ad esempio, se hai più varianti di build, ad esempio 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 determinati metodi precedenti nell'API Variants, come variant.getJavaCompile(), potrebbe comunque forzare la configurazione dell'attività. Per assicurarti che la compilazione sia ottimizzata per la configurazione delle attività lazy, richiama nuovi metodi che restituiscano un oggetto TaskProvider, come variant.getJavaCompileProvider().

    Se esegui attività di compilazione personalizzate, scopri come adattarsi 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 del Blog per sviluppatori Android.

  • Generazione più rapida delle classi R per i progetti di librerie: in precedenza, il plug-in Gradle di Android generava un file R.java per ogni dipendenza del progetto e poi compilava le classi R insieme alle altre classi dell'app. Ora il plug-in genera un file JAR contenente direttamente la classe R compilata della tua app, senza dover prima creare classi R.java intermedie. Questa ottimizzazione può migliorare notevolmente le prestazioni di compilazione per i progetti che includevano molti progetti secondari e dipendenze della libreria, nonché 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, di conseguenza, riduce le dimensioni sul disco della tua app. 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 con una sola variante: la sincronizzazione del progetto con la configurazione di compilazione è un passaggio importante per consentire ad Android Studio di comprendere la struttura del progetto. Tuttavia, questa procedura può essere molto laboriosa per i progetti di grandi dimensioni. Se il progetto utilizza più varianti di compilazione, 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. Se soddisfi questi requisiti, IDE ti chiede di attivare questa ottimizzazione quando sincronizzi il progetto. L'optimizzazione è attivata per impostazione predefinita anche nei nuovi progetti.

    Per attivare questa ottimizzazione manualmente, 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 offre un supporto parziale per Kotlin. Quando attivi l'ottimizzazione per i progetti con contenuti Kotlin, la sincronizzazione di Gradle ricorre all'utilizzo interno delle varianti complete.

  • Download automatico dei pacchetti SDK mancanti: questa funzionalità è stata ampliata per supportare NDK. Per scoprire di più, leggi Scaricare automaticamente i pacchetti mancanti con Gradle.

Correzioni di bug

  • Il plug-in Android per Gradle 3.3.0 risolve 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, incluso annotation.AnyRes incluso in modo statico
    • Quando utilizzi RenderScript, non devi più impostare manualmente la versione di Build Tools nei file build.gradle