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 predefinito diminuisce da 1 GB a 512 MB. Ciò potrebbe comportare una regressione delle prestazioni della build. Per ignorare questa impostazione predefinita, specifica le dimensioni 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 creazione dell'SDK. |
Questo aggiornamento secondario supporta la compatibilità con nuove impostazioni predefinite e funzionalità per la visibilità dei pacchetti in Android 11.
Per informazioni dettagliate, consulta le note di rilascio della versione 4.0.1.
3.4.2 (luglio 2019)
Questo aggiornamento secondario supporta Android Studio 3.4.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 sugli aggiornamenti delle release.
3.4.1 (maggio 2019)
Questo aggiornamento secondario supporta Android Studio 3.4.1 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 sugli aggiornamenti delle release.
Nuove funzionalità
-
Nuove configurazioni delle dipendenze del controllo lint:il comportamento di
lintChecks
è cambiato ed è stata introdotta una nuova configurazione delle dipendenze,lintPublish
, per darti maggiore controllo sui controlli lint inclusi 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 dipendenzelintChecks
per includere i controlli lint nell'AAR pubblicato, devi eseguire la migrazione di queste dipendenze per utilizzare invece la nuova configurazionelintPublish
descritta di seguito. -
lintPublish
: utilizza questa nuova configurazione nei progetti della libreria 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 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 creazione dei pacchetti e firma dovrebbero registrare un miglioramento complessivo della velocità di compilazione. Se noti un peggioramento delle prestazioni correlato a queste attività, segnala un bug.
-
Modifiche al comportamento
-
Avviso di ritiro del plug-in delle funzionalità delle app istantanee Android: se utilizzi ancora il plug-in
com.android.feature
per creare la tua app istantanea, il plug-in Android per Gradle 3.4.0 ti 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 della tua app istantanea all'utilizzo del plug-in delle funzionalità dinamiche, che ti consente anche di pubblicare le esperienze dell'app installata e dell'app istantanea da un unico Android App Bundle. -
R8 attivato per impostazione predefinita:R8 integra la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la creazione di file DEX in un unico passaggio, con conseguente miglioramento notevole delle prestazioni di build. R8 è stato introdotto nel plug-in Android per Gradle 3.3.0 e ora è abilitato 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.

Ora, con R8, la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in formato DEX (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 usufruire di R8. Tuttavia, poiché è 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 improbabile situazione, potresti dover aggiungere regole aggiuntive per mantenere il codice nell'output della build.
Se riscontri problemi con 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 tuo 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 ricevi un errore di build se provi a utilizzarendkBuild
per compilare le librerie native. Devi invece utilizzare CMake o ndk-build per aggiungere codice C e C++ al tuo progetto.
Problemi noti
-
L'utilizzo corretto di nomi di pacchetti unici non è attualmente applicato, ma diventerà più rigoroso nelle versioni successive del plug-in. Nel plug-in Android Gradle versione 3.4.0, puoi attivare il controllo per verificare se il tuo 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.