Plug-in Android per Gradle 9.2.0 (aprile 2026)

Il plug-in Android per Gradle 9.2 è una release secondaria che include una serie di nuove funzionalità e miglioramenti.

Compatibilità

Il livello API massimo supportato dal plug-in Android per Gradle 9.2 è il livello API 37.0. Ecco altre informazioni sulla compatibilità:

Versione minima Versione predefinita Note
Gradle 9.4.1 9.4.1 Per saperne di più, consulta la sezione Aggiornare Gradle.
Strumenti di build dell'SDK 36.0.0 36.0.0 Installa o configura gli strumenti di compilazione dell'SDK.
NDK N/D 28.2.13676358 Installa o configura una versione diversa dell'NDK.
JDK 17 17 Per saperne di più, consulta la sezione Impostare la versione di JDK.

Report unificati su copertura e test

AGP 9.2.0-alpha07 introduce attività per generare dashboard HTML che consolidano i risultati dei test e la copertura di vari tipi di test (unità e strumentazione), moduli e varianti di build, fornendo una panoramica completa in un'unica dashboard. Per saperne di più, consulta Generare report unificati sulla copertura del codice e Visualizzare report di test unificati.

Modifiche R8

Le seguenti modifiche di R8 sono incluse in AGP 9.2.0.

Semantica -keepattributes più rigorosa per mantenere le annotazioni invisibili in fase di runtime

Le annotazioni invisibili in fase di runtime non possono essere lette in fase di runtime. Pertanto, D8 rimuove in modo incondizionato le annotazioni invisibili in fase di runtime, senza possibilità di modificare questa impostazione.

Per la compatibilità con ProGuard, R8 supporta l'output di annotazioni invisibili in fase di runtime. Tuttavia, durante la compilazione in DEX, le annotazioni invisibili in fase di runtime in genere non devono mai essere conservate. Tuttavia, è prassi comune includere la regola conveniente -keepattributes *Annotation* (direttamente o indirettamente dalle regole di conservazione dei consumatori) per R8 per mantenere visibili le annotazioni di runtime. Purtroppo, in questo modo vengono mantenute anche le annotazioni invisibili in fase di runtime.

Per mitigare questo problema e corrispondere meglio al comportamento di D8, i pattern -keepattributes con caratteri jolly non corrispondono più a RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations e RuntimeInvisibleTypeAnnotations. Di conseguenza, le annotazioni invisibili in fase di runtime verranno mantenute solo se il nome dell'attributo è menzionato esplicitamente senza caratteri jolly.

Nessuna delle seguenti regole manterrà le annotazioni invisibili in fase di runtime:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

Per mantenere le annotazioni invisibili in fase di runtime, utilizza la seguente regola:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

Supporto dei nomi negati nelle regole dei membri

Il linguaggio di configurazione è stato esteso in modo da poter ora corrispondere a pattern di nomi di membri negati.

Ad esempio, per trovare tutti i metodi che non terminano con "ForTesting", utilizza la seguente regola:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

I pattern dei nomi dei membri possono essere negati anche nella precondizione delle regole -if. Se un pattern di nome membro negato contiene caratteri jolly, questi non possono essere referenziati a ritroso nella regola conseguente -if.

Problemi risolti

Plug-in Android per Gradle 9.2.1

Problemi risolti
Plug-in Android per Gradle
java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0

Plug-in Android per Gradle 9.2.0

Problemi risolti
Plug-in Android per Gradle
Avvisa gli utenti se hanno commonTest ma dimenticano withHostTestBuilder
[fused lib - public] OkHttp includes sources
Impossibile eseguire androidDeviceTest con i segnaposto del manifest nella libreria (AGP 9.0.0 con il plug-in com.android.kotlin.multiplatform.library)
AGP deve avvisare se l'utente ha src/androidDeviceTest/java con Java disattivato
AGP 9.0 Nessun equivalente di androidComponents.onVariant per applicationVariants.all.mergeAssetsProvider
I file `*.xml.flat` contengono percorsi file assoluti
R8D8ThreadPoolBuildService non registrato
Errore JdkImageTransform con JDK 26
Codifica automatica di minAgpVersion nei metadati AAR in AGP 10.0
Rinomina dell'APK utilizzando il nuovo DSL AGP
Errore durante l'accesso (ma non la valutazione) a bootClasspath IllegalStateException: targetCompatibility is not yet finalized
Il set di origini keepRules non funziona per le librerie
Incorporare la dichiarazione di compatibilità CC in AGP
Aggiorna la dipendenza del plug-in Kotlin per Gradle alla versione 2.3.10
Consenti compileSdk più elevato per i test rispetto a quello principale
Pelucchi
Lint typo in message
Finestra contestuale troncata nei report Lint SARIF a causa del puntatore di offset bloccato in `SarifReporter.kt`
Al client Gradle Lint manca una funzionalità critica che lo rende inaffidabile
Errore di lint quando la riduzione delle risorse è disattivata
AGP 9 Lint segnala WrongConstant quando si utilizzano costanti IntDef nidificate
Errore di lint quando la riduzione delle risorse è disattivata
Integrazione di Lint
Android Lint non riesce a eseguire i controlli Lint personalizzati compilati nel bytecode Java 21
Le attività Gradle Lint ignorano il flag --quiet
Shrinker (R8)
Il targeting di Java 11 sembra interrompere d8