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 si utilizza 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 di build. Per ignorare questa impostazione predefinita, specifica la dimensione 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 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 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 delle correzioni di bug degne di nota, leggi il post correlato sul blog 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 delle correzioni di bug degne di nota, leggi il post correlato sul blog Aggiornamenti delle release.
Nuove funzionalità
-
Nuove configurazioni delle dipendenze per il controllo lint: il comportamento di
lintChecksè cambiato ed è stata introdotta una nuova configurazione delle dipendenze,lintPublish, per darti un maggiore controllo sui controlli lint inclusi nei pacchetti delle librerie Android.-
lintChecks: questa è una configurazione esistente che devi utilizzare per i controlli lint che vuoi eseguire solo quando crei il progetto localmente. Se in precedenza utilizzavi lalintChecksconfigurazione delle dipendenze per includere i controlli lint nell'AAR pubblicato, devi eseguire la migrazione di queste dipendenze per utilizzare invece la nuovalintPublishconfigurazione descritta di seguito. -
lintPublish: utilizza questa nuova configurazione nei progetti di 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 di pacchetti e firma dovrebbero registrare un miglioramento complessivo della velocità di build velocità. Se noti una regressione delle prestazioni relativa a queste attività, segnala un bug.
-
Modifiche al comportamento
-
Avviso di ritiro del plug-in delle funzionalità delle app istantanee Android warning: se utilizzi ancora il
com.android.featureplug-in 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 dell'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 singolo Android App Bundle. -
R8 abilitato per impostazione predefinita: R8 integra la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in DEX in un unico passaggio, con conseguenti miglioramenti significativi 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 le 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, la rimozione dello zucchero sintattico, la riduzione, l'offuscamento, l'ottimizzazione e la conversione in 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é 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 regole aggiuntive per mantenere il codice nell'output di build.
Se riscontri problemi durante l'utilizzo di R8, leggi le
domande frequenti sulla compatibilità di R8
per verificare se esiste una soluzione al tuo problema. Se non è documentata una soluzione,
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 compilazione, 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 compilazione, indipendentemente dal fatto che tu
disattivi R8 nel file gradle.properties del progetto.
-
ndkCompileè ritirato: ora viene visualizzato un errore di build se provi a utilizzarendkBuildper compilare le librerie native. In alternativa, devi utilizzare CMake o ndk-build per aggiungere codice C e C++ al progetto.
Problemi noti
-
Al momento non viene applicato l'utilizzo corretto di nomi di pacchetti univoci, 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 se il tuo progetto dichiara nomi di pacchetti accettabili aggiungendo la riga seguente al file
gradle.properties.android.uniquePackageNames = truePer saperne di più sull'impostazione di un nome di pacchetto tramite il plug-in Android per Gradle, consulta Impostare l'ID applicazione.