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 è 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 compilazione dell'SDK.
NDK N/D 25.1.8937393 Installa o configura una versione diversa del NDK.
JDK 17 17 Per saperne di più, vedi Impostare la versione JDK.

Nuova macro per specificare il percorso del JDK

#GRADLE_LOCAL_JAVA_HOME è una nuova macro che puoi utilizzare per specificare il percorso del JDK. In questo modo, è più sicuro e facile specificare il percorso home di Java utilizzato per l'esecuzione del daemon Gradle (processo in background) per il 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 compilazione > Gradle.

Per impostazione predefinita, i nuovi progetti utilizzeranno #GRADLE_LOCAL_JAVA_HOME. La migrazione dei progetti esistenti alla nuova macro verrà eseguita automaticamente 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 JDK di Gradle e del progetto incompatibili, poiché esiste un'unica fonte attendibile per la selezione del JDK di Gradle.

Problemi risolti

Plug-in Android per Gradle 8.2.0

Problemi risolti
Plug-in Android per Gradle
I tipi di origine personalizzati devono creare set di origini multi-flavor
Il controllo della versione dell'SDK non gestisce gli utenti delle estensioni dell'SDK
DependenciesInfoBuilder ha bisogno di un aggiornamento dell'API e della documentazione
La trasformazione DexingNoClasspathTransform (minSdk >= 24) con target Java 11 non riesce a causa di membri nidificati mancanti
DslExtension.Builder.extendProjectWith() non funziona come descritto in Groovy
Aggiungi l'API VariantSelector.withFlavor che non utilizza kotlin.Pair
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) ha una mancata corrispondenza nella cache perché "proguard.txt" è cambiato
Il file manifest unito dell'app contiene gli attributi extractNativeLibs e useEmbeddedDex dalle dipendenze
AIDL non riesce con build-tools 33.0.0
AGP: esponi il percorso allo strumento AIDL e al file AIDL del framework come API pubblica
Richiesta: consentire all'IDE di offrire una correzione per "PermittedSubclasses richiede ASM9"
Bytecode target 17 durante la compilazione dell'AGP
Rimuovi VariantManager.getModifiedName
AndroidTest.packaging.jniLibs.keepDebugSymbols non influisce sul packaging di androidTest
Le attività di test di strumentazione GMD si bloccano e, al successivo 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 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 funzionare.
Incompatibilità tra la trasformazione ASM e toAppend()
Correggere gli errori Lint quando esegui lint con K2 UAST tramite Gradle in un progetto KMP
Supporto per missingDimensionStrategy a livello di variante e, eventualmente, matchingFallback per tipo di build/flavor
"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
Pubblicizza i requisiti della versione R8 / D8 nei metadati AAR (ad es. per coreLibraryDesugaring e la nuova API out-of-lining)
Avviso di sincronizzazione: "Non è possibile accedere a GradleBuildProject.Builder tramite AnalyticsConfiguratorService dopo la creazione di AnalyticsService"
Esegui l'aggiornamento alla versione milestone o RC di Gradle 8.2
Impossibile accedere a "java.lang.Comparable"
androidResources non è disponibile nel modulo della libreria Android
Esecuzione non riuscita per l'attività ':app:mergeReleaseClasses' dopo l'aggiornamento di AGP da 8.0.2 a 8.1.0
Gradle 8.1 interrompe la memorizzazione nella cache della configurazione a causa di .gradle/.android/analytics.settings
[AGP 8.1.0] Il comando ./gradlew test non riesce con il messaggio "Impossibile trovare l'output del file manifest" se sia splits.abi.isEnable sia testOptions.unitTests.isIncludeAndroidResources sono true
Android Studio Giraffe non rispetta versionCodeOverride con AGP 8.1
AGP 8.1.0 disinstalla l'app dopo l'esecuzione dei test con strumenti, mentre 7.4.2 no
La trasformazione di un APK genera un errore con ListingFileRedirectTask
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
Attivare i record nativi e le classi sigillate durante il dexing per API min 34 e versioni successive
Lint
Il controllo lint di cui è stata eseguita l'istanza non gestisce bene AppComponentFactory
Le versioni alpha di Lint 8.2.0 non supportano ancora le importazioni di funzioni di primo livello in Kotlin
Aggiungere un'opzione per non includere i numeri di riga e colonna nella linea di base di lint
Aggiungere un'opzione per non includere i numeri di riga e colonna nella linea di base di lint
I test Lint non supportano le funzionalità del linguaggio Java 17
La patch 1 di Bumblebee 2021.1.1 indica che una versione precedente (20030203.000550) di commons-io è più recente di 2.11.0.
Le versioni alpha di Lint 8.2.0 non supportano ancora le importazioni di funzioni di primo livello in Kotlin
La patch 1 di Bumblebee 2021.1.1 indica che una versione precedente (20030203.000550) di commons-io è più recente di 2.11.0.
Android Studio contrassegna erroneamente la versione specificata come non aggiornata.
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 eseguire una libreria KMP con "la proprietà 'variantInputs.name' non ha un valore configurato".
Integrazione di lint
Errore di lint DuplicatePlatformClasses dalla dipendenza testImplementation
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
La compilazione si blocca su :minifyReleaseWithR8 quando si utilizza la libreria Apache POI
Kotlin 1.9 causa l'eliminazione delle lambda di Kotlin da parte di R8 se vengono rimossi i controlli null

Plug-in Android per Gradle 8.2.1

Problemi risolti
Plug-in Android per Gradle
Non eseguire l'attività di decompilazione sui classi dei sottoprogetti se sono già stati decompilati tramite le trasformazioni degli elementi
Il plug-in Android per Gradle non è riuscito con JavaVersion.VERSION_11 e OpenJDK 21 ea
Dexer (D8)
Desugar dei record per Android U
Shrinker (R8)
R8 genera dex danneggiato con conseguente eccezione di assegnazione di tipo di classe in fase di esecuzione
R8 causa la modifica dell'interfaccia in un'interfaccia inaccessibile
Arresto anomalo dell'SDK Flurry R8 con AGP 8.2.0
Android - R8 causa un arresto anomalo della sottoclasse di LinearLayoutManager
ClassCastException in R8 quando il riacpack è 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 JaCoCo in AGP 8.2.0
Dexer (D8)
[libreria desugared] La versione 2.1 della libreria desugared 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 è più grande di 1,57 MB rispetto a R8 8.1.56
class.getInterfaces() restituisce un valore vuoto