Plug-in Android per Gradle 3.4.0 (aprile 2019)

Questa versione del plug-in Android richiede quanto segue:

Versione minima Versione predefinita Note
Gradle 5.1.1 5.1.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 eseguire l'override di 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.4.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.4.2 (luglio 2019)

Questo aggiornamento minore supporta Android Studio 3.4.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.4.1 (maggio 2019)

Questo aggiornamento minore supporta Android Studio 3.4.1 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.

Nuove funzionalità

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

    • lintChecks: si tratta di una configurazione esistente che dovresti utilizzare per i controlli lint che vuoi eseguire solo durante la compilazione del progetto localmente. 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 la nuova configurazione lintPublish descritta di seguito.
    • lintPublish: utilizza questa nuova configurazione nei progetti di librerie 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 di 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 packaging e firma dovrebbero registrare un miglioramento complessivo della velocità di compilazione. Se noti un peggioramento del rendimento relativo a queste attività, segnala un bug.

Modifiche al comportamento

  • Avviso di ritiro del plug-in delle funzionalità per le app istantanee Android: se continui a utilizzare il plug-in com.android.feature per compilare la tua app istantanea, il plug-in Android per Gradle 3.4.0 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 dell'app istantanea all'utilizzo del plug-in delle funzionalità dinamiche, che ti consente anche di pubblicare sia le esperienze istantanee sia quelle delle app installate da un unico app bundle Android.

  • R8 abilitato per impostazione predefinita: R8 integra la rimozione del codice non necessario, la compressione, l'oscuramento, l'ottimizzazione e il dexing in un unico passaggio, con miglioramenti significativi del rendimento della compilazione. R8 è stato introdotto nel plug-in Android per Gradle 3.3.0 e ora è attivato 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 dal dexing e dalla desugaring.

Ora, con R8, le operazioni di desugaring, shrinking, obfuscating, ottimizzazione e dexing (D8) vengono completate in un unico passaggio, come illustrato di seguito.

Con R8, le operazioni di desugaring, di riduzione, di offuscamento, di ottimizzazione e di dexing vengono eseguite 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é si tratta di 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 situazione improbabile, potresti dover aggiungere altre regole per mantenere il codice nell'output della compilazione.

Se riscontri problemi con l'utilizzo di R8, consulta le domande frequenti sulla compatibilità di R8 per verificare se esiste una soluzione al problema. Se una soluzione non è documentata, segnala un bug. Puoi disattivare R8 aggiungendo una delle seguenti righe al file gradle.properties del 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 viene visualizzato un errore di compilazione se provi a utilizzare ndkBuild per compilare le librerie native. Ti consigliamo di utilizzare CMake o ndk-build per aggiungere codice C e C++ al tuo progetto.

Problemi noti

  • Al momento l'utilizzo corretto dei nomi dei pacchetti univoci non è obbligatorio, ma diventerà più rigoroso nelle versioni successive del plug-in. Nel plug-in Android Gradle versione 3.4.0, puoi attivare la verifica se il 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.