Plug-in Android Gradle 8.2.0 (novembre 2023)

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

Compatibilità

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

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

Nuova macro per specificare il percorso JDK

#GRADLE_LOCAL_JAVA_HOME è una nuova macro che puoi utilizzare per specificare il percorso JDK. In questo modo, è più facile e sicuro specificare il percorso della home di Java utilizzato per l'esecuzione del daemon Gradle (processo in background) per il tuo progetto. La selezione del percorso viene memorizzata nel campo java.home del file .gradle/config.properties. Imposta questo campo tramite le impostazioni JDK di Gradle in Android Studio: File (o Android Studio su macOS) > Impostazioni > Build, esecuzione, deployment > Strumenti di build > Gradle.

Per impostazione predefinita, i nuovi progetti utilizzeranno #GRADLE_LOCAL_JAVA_HOME. I progetti esistenti verranno migrati automaticamente alla nuova macro dopo una sincronizzazione riuscita, a meno che tu non stia già utilizzando una macro come #JAVA_HOME.

I principali vantaggi della nuova macro sono i seguenti:

  • Puoi modificare manualmente il percorso JDK per attivare la sincronizzazione senza prima aprire il progetto.
  • Meno errori correlati a versioni JDK di Gradle e del progetto incompatibili, poiché esiste un'unica fonte attendibile per la selezione JDK di Gradle.

Problemi risolti

Plug-in Android per Gradle 8.2.2

Problemi risolti
Plug-in Android per Gradle
Impossibile impostare la versione di JaCoCo nel plug-in Android per Gradle 8.2.0
Dexer (D8)
[Libreria desugarizzata] La versione 2.1 della libreria desugarizzata non è compatibile con le versioni precedenti di R8
Le ottimizzazioni vengono eseguite anche solo con D8?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21 è 1,57 MB più grande di R8 8.1.56
class.getInterfaces() restituisce un valore vuoto

Plug-in Android per Gradle 8.2.1

Problemi risolti
Plug-in Android per Gradle
Non eseguire l'attività di dexing sulle classi dei sottoprogetti quando sono già state eseguite tramite le trasformazioni degli artefatti
Il plug-in Android per Gradle non è riuscito a eseguire l'operazione con JavaVersion.VERSION_11 e OpenJDK 21 ea
Dexer (D8)
Desugarizza i record per Android U
Shrinker (R8)
R8 genera un dex danneggiato che causa un'eccezione di cast di classe in fase di runtime
R8 causa la modifica dell'interfaccia in un'interfaccia inaccessibile
Arresto anomalo dell'SDK Flurry di R8 con il plug-in Android per Gradle 8.2.0
Android: R8 causa l'arresto anomalo della sottoclasse di LinearLayoutManager
ClassCastException in R8 quando il riconfezionamento è attivo e la riduzione, l'offuscamento e l'ottimizzazione sono disattivati
R8 bloccato in BridgeAnalyzer.analyzeMethod
R8 v8.2.33, arresto anomalo in fase di runtime "java.lang.VerifyError: Bad type on operand stack" dopo l'upgrade

Plug-in Android per Gradle 8.2.0

Problemi risolti
Plug-in Android per Gradle
I tipi di origine personalizzati devono creare sourceset multi-flavor
Il controllo della versione dell'SDK non gestisce gli utenti delle estensioni dell'SDK
DependenciesInfoBuilder richiede l'aggiornamento dell'API e della documentazione
DexingNoClasspathTransform (minSdk >= 24) con Java 11 come target non riesce a causa della mancanza di membri nidificati
DslExtension.Builder.extendProjectWith() non funziona come descritto in Groovy
Aggiungi l'API VariantSelector.withFlavor che non utilizza kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) ha un fallimento della cache perché `proguard.txt` è stato modificato
Il manifest unito dell'app contiene gli attributi extractNativeLibs e useEmbeddedDex delle dipendenze
AIDL non riesce a eseguire l'operazione con gli strumenti di build 33.0.0
Plug-in Android per Gradle: esponi il percorso dello strumento AIDL e del file AIDL del framework come API pubblica
Richiesta: consenti all'IDE di offrire una correzione per "PermittedSubclasses richiede ASM9"
Bytecode di destinazione 17 durante la compilazione del plug-in Android per Gradle
Rimuovi VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols non influisce sul packaging di androidTest
Le attività di test di strumentazione GMD si bloccano e, dopo aver riprovato, iniziano a non riuscire
generateLocaleConfig nel plug-in Android per Gradle 8.1.0 utilizza un ordinamento non deterministico, interrompendo le build riproducibili
ProcessApplicationManifest.navigationJsons contiene file con percorsi assoluti
L'accesso a GradleBuildProject.Builder tramite AnalyticsConfiguratorService non è consentito dopo la creazione di AnalyticsService
AndroidTest.packaging.jniLibs.keepDebugSymbols non influisce sul packaging di androidTest
Compilazione consentita per valori di colore non validi
"ReplaceWith" errato per VariantBuilder
Gradle 8.1 interrompe la memorizzazione nella cache della configurazione a causa di .gradle/.android/analytics.settings
I messaggi di deprecazione non utilizzano `ReplaceWith`
Esporre un modo per ottenere la versione NDK predefinita
Il plug-in Android per Gradle richiede Java 17 per l'esecuzione.
Incompatibilità tra ASM Transform e toAppend()
Correggi LintErrors quando esegui lint con K2 UAST tramite Gradle in un progetto KMP
Supporto per missingDimensionStrategy a livello di variante e, possibilmente, per tipo di compilazione/flavor matchingFallback
`android.injected.studio.version` è stato rimosso in Android Studio Giraffe
Aggiungi la possibilità di disattivare AndroidXDependencyCheck
generateLocaleConfig nel plug-in Android per Gradle 8.1.0 utilizza un ordinamento non deterministico, interrompendo le build riproducibili
Pubblicizza i requisiti di versione di R8 / D8 nei metadati AAR (ad es. per coreLibraryDesugaring e il nuovo API out-of-lining)
Avviso di sincronizzazione: "Non è consentito accedere a GradleBuildProject.Builder tramite AnalyticsConfiguratorService dopo la creazione di AnalyticsService"
Esegui l'aggiornamento a Gradle 8.2 milestone o RC
Impossibile accedere a "java.lang.Comparable"
androidResources non è disponibile nel modulo della libreria Android
L'esecuzione dell'attività ":app:mergeReleaseClasses" non è riuscita dopo l'aggiornamento del plug-in Android per Gradle dalla versione 8.0.2 alla 8.1.0
Gradle 8.1 interrompe la memorizzazione nella cache della configurazione a causa di .gradle/.android/analytics.settings
[Plug-in Android per Gradle 8.1.0] ./gradlew test non riesce con "Impossibile trovare l'output del manifest" se sia splits.abi.isEnable sia testOptions.unitTests.isIncludeAndroidResources sono impostati su true
Android Studio Giraffe non rispetta versionCodeOverride con il plug-in Android per Gradle 8.1
Il plug-in Android per Gradle 8.1.0 disinstalla l'app dopo l'esecuzione dei test di strumentazione, mentre la versione 7.4.2 non lo fa
La trasformazione di un APK genera un errore con ListingFileRedirectTask
REGRESSIONE HEDGEHOG: il pulsante Esegui viene ritardato di alcuni secondi (Creazione della specifica)
Dexer (D8)
Attiva i record nativi e le classi sealed durante il dexing per l'API minima 34 e versioni successive
Lint
Il controllo lint con istanza non gestisce correttamente AppComponentFactory
Le versioni alpha di Lint 8.2.0 non supportano ancora le importazioni di funzioni di primo livello in Kotlin
Aggiungi un'opzione per non includere i numeri di riga e colonna nella baseline di lint
Aggiungi un'opzione per non includere i numeri di riga e colonna nella baseline di lint
I test lint non supportano le funzionalità del linguaggio Java 17
Bumblebee 2021.1.1 Patch 1 indica che una versione precedente (20030203.000550) di commons-io è più recente della versione 2.11.0.
Le versioni alpha di Lint 8.2.0 non supportano ancora le importazioni di funzioni di primo livello in Kotlin
Bumblebee 2021.1.1 Patch 1 indica che una versione precedente (20030203.000550) di commons-io è più recente della versione 2.11.0.
Android Studio contrassegna erroneamente la versione specificata come obsoleta.
Lint ignora il problema UseValueOf quando si utilizza K2 UAST
Problemi imprevisti di un altro progetto contrassegnati da Android Lint
Android Lint non riesce a eseguire l'operazione su una libreria KMP con `property 'variantInputs.name' doesn't have a configured value.`
Integrazione di Lint
Errore lint DuplicatePlatformClasses dalla dipendenza testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
La build si blocca su :minifyReleaseWithR8 quando si utilizza la libreria Apache POI
Kotlin 1.9 fa sì che le lambda Kotlin vengano eliminate da R8 se i controlli null vengono rimossi