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 scoprire di più, consulta la sezione Aggiornare Gradle.
Strumenti di compilazione SDK 34.0.0 34.0.0 Installa o configura gli strumenti di creazione dell'SDK.
NDK N/D 25.1.8937393 Installa o configura una versione diversa dell'NDK.
JDK 17 17 Per saperne di più, vedi 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ù sicuro e semplice specificare il percorso della home directory di Java utilizzato per l'esecuzione del daemon Gradle (processo in background) per il tuo progetto. La selezione del percorso è 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 > Build Tools > 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 non utilizzi già 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 aprire prima il progetto.
  • Meno errori relativi a versioni incompatibili di Gradle e JDK del progetto, poiché esiste un'unica fonte attendibile per la selezione di Gradle JDK.

Problemi risolti

Plug-in Android per Gradle 8.2.0

Problemi risolti
Plug-in Android per Gradle
I tipi di origini personalizzate devono creare set di origini multiformato
Il controllo della versione dell'SDK non gestisce gli utenti delle estensioni dell'SDK
DependenciesInfoBuilder richiede l'aggiornamento dell'API + 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 errore di cache perché `proguard.txt` è stato modificato
Il file manifest unito dell'app contiene gli attributi extractNativeLibs e useEmbeddedDex delle dipendenze
AIDL non riesce con build-tools 33.0.0
AGP: Expose path to AIDL tool and framework AIDL file as public API
Richiesta: consenti all'IDE di offrire una correzione per "PermittedSubclasses richiede ASM9"
Target bytecode 17 durante la compilazione di AGP
Rimuovi VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols non influisce sulla pacchettizzazione di androidTest
Le attività di test di strumentazione GMD si bloccano e, al nuovo tentativo, iniziano a non riuscire
generateLocaleConfig in AGP 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 sulla pacchettizzazione 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
Per funzionare, il plug-in Android per Gradle richiede Java 17.
Incompatibilità tra la trasformazione ASM e toAppend()
Correggi LintErrors durante l'esecuzione di lint con K2 UAST tramite Gradle in un progetto KMP
Supporto di missingDimensionStrategy a livello di variante e, possibilmente, di build type/flavor matchingFallback
`android.injected.studio.version` è stato rimosso in Android Studio Giraffe
Aggiunta della possibilità di disattivare AndroidXDependencyCheck
generateLocaleConfig in AGP 8.1.0 utilizza un ordinamento non deterministico, interrompendo le build riproducibili
Pubblicare i requisiti di versione di R8 / D8 nei metadati AAR (ad es. per coreLibraryDesugaring e la nuova API out-of-lining)
Avviso di sincronizzazione: "GradleBuildProject.Builder should not be accessed through AnalyticsConfiguratorService after AnalyticsService is created"
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 di AGP 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
[AGP 8.1.0] ./gradlew test non riesce con "Unable to find manifest output" se sia splits.abi.isEnable che testOptions.unitTests.isIncludeAndroidResources sono impostati su true
Android Studio Giraffe non rispetta versionCodeOverride con AGP 8.1
AGP 8.1.0 disinstalla l'app dopo l'esecuzione di test strumentati, mentre la versione 7.4.2 non lo fa
La trasformazione di un APK genera un errore con ListingFileRedirectTask
REGRESSIONE HEDGEHOG: il pulsante Esegui è ritardato di alcuni secondi (creazione della specifica)
Dexer (D8)
Abilita le classi native record e sealed durante la dexing per min-api 34 e versioni successive
Pelucchi
Il controllo lint di cui è stata creata un'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 vecchia versione (20030203.000550) di commons-io è più recente della 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 vecchia versione (20030203.000550) di commons-io è più recente della 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 segnalati da Android Lint
Android Lint non riesce a elaborare una libreria KMP con il messaggio `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 espressioni lambda Kotlin vengano eliminate da R8 se i controlli di nullità vengono rimossi

Plug-in Android per Gradle 8.2.1

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

Plug-in Android per Gradle 8.2.2

Problemi risolti
Plug-in Android per Gradle
Impossibile impostare la versione di JaCoCo in AGP 8.2.0
Dexer (D8)
[libreria desugarizzata] La libreria desugarizzata versione 2.1 non è compatibile con le versioni precedenti di R8
Ottimizzazioni 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