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 JDK.

Report di test e copertura unificati

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 di copertura del codice unificati e Visualizzare report di test unificati.

Modifiche di 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 incondizionatamente le annotazioni invisibili in fase di runtime, senza possibilità di modificare questa impostazione.

Per la compatibilità con ProGuard, R8 supporta l'output delle annotazioni invisibili in fase di runtime. Tuttavia, quando si esegue la compilazione in DEX, in genere le annotazioni invisibili in fase di runtime non devono mai essere conservate. Tuttavia, è una pratica comune includere la regola pratica -keepattributes *Annotation* (direttamente o indirettamente dalle regole di conservazione del consumatore) per consentire a R8 di conservare le annotazioni visibili in fase di runtime. Purtroppo, in questo modo vengono conservate anche le annotazioni invisibili in fase di runtime.

Per attenuare 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 conservate solo se il nome dell'attributo viene 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 per i nomi negati nelle regole dei membri

Il linguaggio di configurazione è stato esteso in modo che ora tu possa trovare corrispondenze con i pattern di nomi di membri negati.

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

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

I pattern di nomi di membri possono essere negati anche nella precondizione delle regole -if. Se un pattern di nomi di membri negati contiene caratteri jolly, non è possibile fare riferimento a questi caratteri jolly 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
Warn users if they have commonTest but forget withHostTestBuilder
[fused lib - public] OkHttp includes sources
Cannot run androidDeviceTest with manifest placeholders in library (AGP 9.0.0 with com.android.kotlin.multiplatform.library plugin)
AGP should warn if user has src/androidDeviceTest/java with java disabled
AGP 9.0 No androidComponents.onVariant equivalent for applicationVariants.all.mergeAssetsProvider
`*.xml.flat` files contain absolute file paths
R8D8ThreadPoolBuildService not registered
JdkImageTransform failure with JDK 26
Automatically encode minAgpVersion in the AAR metadata in AGP 10.0
Renaming APK using new AGP DSL
Error when accessing (but not evaluating) bootClasspath IllegalStateException: targetCompatibility is not yet finalized
keepRules sourceset not working for libraries
Embed CC compatibility declaration in AGP
Update Kotlin Gradle plugin dependency to 2.3.10
Allow higher compileSdk for tests than main
Lint
Lint typo in message
Truncated context window in Lint SARIF reports due to stuck offset pointer in `SarifReporter.kt`
Lint Gradle client is missing a critical feature making it unreliable at best
Lint error when resource shrinking is disabled
AGP 9 Lint reports WrongConstant when using nested IntDef constants
Lint error when resource shrinking is disabled
Integrazione di Lint
Android Lint fails with custom lint checks compiled to Java 21 bytecode
Lint Gradle tasks ignore --quiet flag
Shrinker (R8)
Targeting Java 11 seems to break d8