Il plug-in Android per Gradle 8.0.0 è una release importante che include una serie di nuove funzioni e miglioramenti.
Compatibilità
Versione minima | Versione predefinita | Note | |
---|---|---|---|
Gradle | 8.0 | 8.0 | Per scoprire di più, consulta la sezione sull'aggiornamento di Gradle. |
Strumenti di creazione SDK | 30.0.3 | 30.0.3 | Installa o configura gli strumenti di creazione dell'SDK. |
ND | N/D | 25.1.8937393 | Installa o configura una versione diversa dell'NDK. |
JDK | 17 | 17 | Per scoprire di più, consulta la sezione sull'impostazione della versione JDK. |
Release patch
Di seguito è riportato un elenco delle patch del plug-in Android per Gradle 8,0.
Android Gradle Plugin 8.0.2 (maggio 2023)
Per un elenco dei bug risolti in AGP 8.0.2, vedi Problemi chiusi di Android Studio 2022.2.1.
Android Gradle Plugin 8.0.1 (maggio 2023)
Questo aggiornamento minore include le seguenti correzioni di bug:
Problemi risolti | |
---|---|
Errore: "Nessun requisito di versione con l'ID specificato nella tabella" dopo l'upgrade di AGP 7.2.2 -> 7.4.0
|
|
R8 NullPointerException all'indirizzo markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Errore di verifica della classe difficile su Android 11
|
Modifica che interrompe: spazio dei nomi obbligatorio nello script di build a livello di modulo
Devi impostare lo spazio dei nomi nel file build.gradle.kts
a livello di modulo, anziché
rispetto al file manifest. Puoi iniziare a utilizzare la proprietà DSL namespace
iniziando con AGP 7.3. Per saperne di più, vedi
Imposta uno spazio dei nomi.
Quando esegui la migrazione allo spazio dei nomi DSL, tieni presente i seguenti problemi:
- Le versioni precedenti di AGP deducono lo spazio dei nomi di test dallo spazio dei nomi principale oppure
l'ID applicazione, in alcuni casi in modo errato. L'Assistente per l'upgrade di AGP blocca
eseguire l'upgrade se rileva che lo spazio dei nomi principale e di test del progetto sono
allo stesso modo. Se l'upgrade è bloccato, devi modificare manualmente
testNamespace
e modificare il codice sorgente di conseguenza. - Dopo aver modificato lo spazio dei nomi test, è possibile che il codice venga compilato
ma i test instrumentati non riescono in fase di runtime. Ciò può accadere se le tue
il codice sorgente del test instrumentato fa riferimento a una risorsa definita
androidTest
e origini di app.
Per ulteriori informazioni, vedi problema n. 191813691 commento n. 19.
Modifiche che provocano un errore: valori predefiniti delle opzioni di build
A partire da AGP 8.0, i valori predefiniti di questi flag sono stati modificati in per migliorare le prestazioni delle build. Per ricevere assistenza per modificare il codice al fine di supportare alcuni dei queste modifiche, usa l'Assistente per l'upgrade di AGP (Strumenti > Assistente per l'upgrade di AGP). L'Assistente per l'upgrade ti guida nella procedura aggiornare il codice per adattarlo al nuovo comportamento o impostare flag per mantenere il comportamento precedente.
Segnala | Nuovo valore predefinito | Valore predefinito precedente | Note |
---|---|---|---|
android.defaults.buildfeatures.buildconfig |
false |
true |
AGP 8.0 non genera BuildConfig per impostazione predefinita. Ti servono
per specificare questa opzione utilizzando il DSL nei progetti in cui ne hai bisogno. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 non abilita il supporto AIDL per impostazione predefinita. Devi specificare questa opzione utilizzando il DSL nei progetti in cui ne hai bisogno. Questo flag è prevista per la rimozione in AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 non abilita il supporto di RenderScript per impostazione predefinita. Devi e specificare questa opzione utilizzando il DSL nei progetti in cui ne hai bisogno. Questo è prevista la rimozione del flag AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 genera classi R con campi non finali di
predefinito. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 genera classi R per le risorse definite in
solo per il modulo corrente. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 abilita la modalità completa R8 per impostazione predefinita. Per ulteriori dettagli, vedi Modalità completa R8. |
Modifiche che provocano un errore: valori delle opzioni di build applicate
A partire da AGP 8.0, non puoi più modificare i valori di questi flag. Se
se li specifichi nel file gradle.properties
, il valore viene ignorato e AGP
stampa gli avvisi.
Segnala | Valore applicato | Note |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 emette un avviso se rileva la risoluzione della configurazione durante la fase di configurazione perché influisce negativamente sulla configurazione di Gradle volte. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 non riesce le build che utilizzano R8 se mancano classi per
garantire una migliore ottimizzazione DEX. Per risolvere questo problema, devi aggiungere
librerie mancanti o -dontwarn regole di Keep. Per ulteriori dettagli,
vedi
Avvisi di classe mancanti nello shrinker R8. |
android.testConfig.useRelativePath |
true |
Quando viene supportata l'utilizzo di risorse, asset e manifest Android in
delle unità di misura è abilitato, AGP 8.0 genera
test_config.properties file che contiene solo il relativo
percorsi di addestramento. In questo modo, i test delle unità Android possono usare sempre lo strumento Gradle
e creare la cache. |
android.useNewJarCreator |
true |
AGP usa la libreria Zipflinger durante la creazione dei file JAR per migliorare per creare le prestazioni. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Se aggiungi le informazioni sulle dipendenze dell'SDK in AAB e APK, AGP 8.0 aggiunge anche un elenco di repository di progetto a queste informazioni. A per saperne di più, consulta Informazioni sulle dipendenze per Play Console. |
android.enableArtProfiles |
true |
I profili di riferimento ora vengono sempre generati. Consulta Profili di riferimento per i dettagli. |
android.enableNewResourceShrinker |
true |
Usa la nuova implementazione di shinker delle risorse per impostazione predefinita. Il nuovo shrinker di risorse include il supporto per le caratteristiche dinamiche. |
android.enableSourceSetPathsMap |
true |
Utilizzato per il calcolo delle mappature dei percorsi delle risorse relative, quindi Gradle crea vengono aggiornati più spesso. |
android.cacheCompileLibResources |
true |
Ora le risorse della libreria compilate possono essere memorizzate nella cache per impostazione predefinita perché Gradle
tiene traccia dei file delle risorse in base alla località del progetto. Richiede
android.enableSourceSetPathsMap da attivare. |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 non crea alcun SoftwareComponent per impostazione predefinita. Invece AGP crea SoftwareComponents solo per le varianti configurate per la pubblicazione utilizzando la DSL per la pubblicazione. |
Nuovo flag stabile per il profilo di esecuzione
AGP include il nuovo flag android.settings.executionProfile
. Usa questo flag per
il profilo di esecuzione predefinito
SettingsExtension
Per saperne di più, consulta la documentazione relativa ai plug-in delle impostazioni.
Per visualizzare l'anteprima delle segnalazioni sperimentali, consulta la note di rilascio dell'anteprima.
Assegnazione di proprietà lazy Kotlin non supportata
Se utilizzi il DSL Kotlin di Gradle per gli script di build, tieni presente che Android
Studio e AGP 8.0 non supportano l'assegnazione delle proprietà sperimentali utilizzando le proprietà
Operatore =
. Per ulteriori informazioni su questa funzione, consulta
note di rilascio
e
documentazione.
Categorie di attività di Build Analyzer
A partire da Android Studio Flamingo, l'Analizzatore build ha una nuova vista predefinita per che incidono sulla durata della build. Se il progetto utilizza AGP 8.0 o versioni successive, invece di visualizzare le attività singolarmente, lo strumento di analisi Creazione le raggruppa per categoria. Ad esempio, attività specifiche di Risorse Android, Kotlin o Dexing raggruppate insieme e poi ordinate in base alla durata della build. In questo modo è facile quale categoria ha il maggiore impatto sul tempo di creazione. Espansione di ogni categoria mostra un elenco delle attività corrispondenti. Per visualizzare le attività singolarmente, senza raggruppare, utilizza il menu a discesa Raggruppa per.
Nuovo plug-in per le impostazioni
AGP 8.0.0-alpha09 introduce il nuovo plugin impostazioni. Il plug-in delle impostazioni consente centralizzare le configurazioni globali (configurazioni che si applicano a tutti i moduli) da un'unica posizione, così non dovrai copiare e incollare le configurazioni moduli. Inoltre, puoi utilizzare il plug-in delle impostazioni per creare lo strumento profili di esecuzione o istruzioni diverse su come eseguire uno strumento e passare da uno all'altro.
Per utilizzare il plug-in delle impostazioni, applica il plug-in nel file settings.gradle
:
apply plugin 'com.android.settings'
Centralizza le configurazioni globali
Per configurare le configurazioni globali, utilizza il nuovo blocco android
in
settings.gradle
file. Ecco un esempio:
android {
compileSdk 31
minSdk 28
...
}
Profili di esecuzione dello strumento
Il plug-in delle impostazioni consente anche di creare profili di esecuzione per alcuni strumenti. Un il profilo di esecuzione determina come viene eseguito uno strumento, puoi selezionare dei profili di esecuzione in base all'ambiente. In un profilo di esecuzione, può impostare argomenti JVM per uno strumento e configurarlo in modo che venga eseguito in un processo separato. Al momento, solo Lo strumento R8 è supportato.
Crea profili di esecuzione e imposta il profilo di esecuzione predefinito nel
settings.gradle
, come mostrato nell'esempio seguente:
android {
execution {
profiles {
high {
r8 {
jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
low {
r8 {
jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
runInSeparateProcess true
}
}
ci {
r8.runInSeparateProcess false
}
}
defaultProfile "low"
}
}
Per eseguire l'override del profilo predefinito, seleziona un altro profilo utilizzando
android.experimental.settings.executionProfile
proprietà nel
gradle.properties
file:
android.experimental.settings.executionProfile=high
Puoi anche impostare questa proprietà utilizzando la riga di comando, che ti consente di configurare
flussi di lavoro diversi. Ad esempio, se hai un flusso di lavoro di integrazione continua
puoi usare la riga di comando per cambiare il profilo di esecuzione senza
modifica il file settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
JDK 17 necessario per eseguire AGP 8.0
Ora è necessario JDK 17 quando usi il plug-in Android Gradle 8.0 per creare la tua app per eseguire Gradle. Flamingo in Android Studio raggruppa JDK 17 e configura Gradle in per impostazione predefinita, il che significa che la maggior parte degli utenti di Android Studio non deve modifiche alla configurazione dei progetti.
Se devi impostare manualmente la versione JDK usato da AGP in Android Studio, devi usare JDK 17 o versioni successive.
Se utilizzi AGP indipendente da Android Studio, esegui l'upgrade della versione JDK entro il giorno
l'impostazione di JAVA_HOME
variabile di ambiente
o -Dorg.gradle.java.home
opzione a riga di comando
alla directory di installazione di JDK 17.