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 saperne di più, consulta la sezione Aggiornare Gradle. Quando utilizzi Gradle 5.0 e versioni successive, la dimensione predefinita dell'heap di memoria del daemon Gradle diminuisce da 1 GB a 512 MB. Ciò potrebbe comportare una regressione delle prestazioni della build. Per eseguire l'override di questa impostazione predefinita, specifica le dimensioni 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. |
Questo aggiornamento minore supporta la compatibilità con le nuove impostazioni e funzionalità predefinite per la visibilità dei pacchetti in Android 11.
Per informazioni dettagliate, leggi 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 di correzioni di bug importanti, leggi il post correlato sul blog sugli aggiornamenti delle release.
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 di correzioni di bug importanti, leggi il post correlato sul blog sugli aggiornamenti delle release.
Nuove funzionalità
-
Nuove configurazioni delle dipendenze per i 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 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 dipendenzelintChecksper includere i controlli lint nell'AAR pubblicato, devi eseguire la migrazione di queste dipendenze per utilizzare la nuova configurazionelintPublish. -
lintPublish: utilizza questa nuova configurazione nei progetti di libreria per i controlli lint che vuoi includere nell'AAR pubblicato, come mostrato nell'esempio seguente. 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 pacchettizzazione e firma dovrebbero registrare un miglioramento complessivo della velocità di build. Se noti una regressione delle prestazioni correlata a queste attività, segnala un bug.
-
Modifiche al comportamento
-
Avviso di ritiro del plug-in per le funzionalità di app istantanee Android: se utilizzi ancora il plug-in
com.android.featureper creare la tua app istantanea, il plug-in Android per Gradle 3.4.0 genererà un avviso di ritiro. Per assicurarti di poter continuare a creare la tua app istantanea sulle versioni future del plug-in, esegui la migrazione della tua app istantanea in modo da utilizzare il plug-in delle funzionalità dinamiche, che ti consente anche di pubblicare le esperienze con l'app installata e istantanea da un singolo Android App Bundle. -
R8 abilitato per impostazione predefinita:R8 integra desugaring, riduzione, offuscamento, ottimizzazione e dexing in un unico passaggio. In questo modo, si ottengono miglioramenti evidenti delle prestazioni di build. R8 è stato introdotto nel plug-in Android per Gradle 3.3.0 ed è ora abilitato per impostazione predefinita sia per i progetti di app sia per i progetti di librerie Android che utilizzano il plug-in 3.4.0 e versioni successive.
L'immagine seguente fornisce una panoramica generale del processo di compilazione prima dell'introduzione di R8.
Ora, con R8, il desugaring, la riduzione, l'offuscamento, l'ottimizzazione e il dexing (D8) vengono completati in un unico passaggio, come illustrato di seguito.
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é 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. In questa situazione improbabile, potresti dover aggiungere altre regole per mantenere il codice nell'output della build.
Se riscontri problemi con 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 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è stato ritirato: ora ricevi un errore di build se provi a utilizzarendkBuildper compilare le tue librerie native. Devi invece utilizzare CMake o ndk-build per aggiungere codice C e C++ al progetto.
Problemi noti
-
L'utilizzo corretto di nomi di pacchetto univoci non è attualmente obbligatorio, ma diventerà più rigoroso nelle versioni successive del plug-in. Nella versione 3.4.0 del plug-in Android per Gradle, puoi attivare la verifica della dichiarazione di nomi di pacchetto accettabili da parte del tuo progetto aggiungendo la riga seguente al file
gradle.properties.android.uniquePackageNames = truePer scoprire di più sull'impostazione di un nome di pacchetto tramite il plug-in Android per Gradle, consulta Imposta l'ID applicazione.