Il plug-in Android per Gradle 8.0.0 è una release principale che include una serie di nuove funzionalità e miglioramenti.
Compatibilità
Versione minima | Versione predefinita | Note | |
---|---|---|---|
Gradle | 8,0 | 8,0 | Per scoprire di più, consulta la sezione Aggiornare Gradle. |
Strumenti di compilazione SDK | 30.0.3 | 30.0.3 | 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. |
Release delle patch
Di seguito è riportato un elenco delle release di patch per il plug-in Android per Gradle 8.0.
Plug-in Android per Gradle 8.0.2 (maggio 2023)
Per un elenco dei bug corretti in AGP 8.0.2, consulta Problemi chiusi di Android Studio 2022.2.1.
Plug-in Android per Gradle 8.0.1 (maggio 2023)
Questo aggiornamento secondario include le seguenti correzioni di bug:
Problemi risolti | |
---|---|
Errore: "No VersionRequirement with the given id in the table" (Nessun VersionRequirement con l'ID specificato nella tabella) dopo l'upgrade di AGP 7.2.2 -> 7.4.0
|
|
R8 NullPointerException at markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Errore di verifica della classe rigida su Android 11
|
Modifica che causa interruzione: 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é nel file manifest. Puoi iniziare a utilizzare la proprietà DSL namespace
a partire da AGP 7.3. Per saperne di più, vedi
Impostare uno spazio dei nomi.
Quando esegui la migrazione al DSL dello spazio dei nomi, tieni presente i seguenti problemi:
- Le versioni precedenti di AGP deducono lo spazio dei nomi di test dallo spazio dei nomi principale o
dall'ID applicazione, in modo errato in alcuni casi. L'assistente all'upgrade di AGP blocca l'upgrade se rileva che lo spazio dei nomi principale e lo spazio dei nomi di test del progetto sono uguali. Se l'upgrade è bloccato, devi modificare manualmente
testNamespace
e modificare il codice sorgente di conseguenza. - Dopo aver modificato lo spazio dei nomi di test, è possibile che la compilazione del codice
vada a buon fine, ma che i test strumentati non vengano eseguiti in fase di runtime. Ciò può accadere se il codice sorgente del test strumentato fa riferimento a una risorsa definita sia nelle origini
androidTest
sia in quelle dell'app.
Per ulteriori informazioni, vedi il commento n. 19 del problema n. 191813691.
Modifiche che causano interruzioni: valori predefiniti delle opzioni di build
A partire da AGP 8.0, i valori predefiniti di questi flag sono stati modificati per migliorare il rendimento della build. Per ricevere assistenza per l'adeguamento del codice in modo da supportare alcune di queste modifiche, utilizza l'assistente per l'upgrade di AGP (Strumenti > Assistente per l'upgrade di AGP). L'assistente all'upgrade ti guida nell'aggiornamento del codice per adattarlo al nuovo comportamento o nell'impostazione dei flag per conservare 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. Devi
specificare questa opzione utilizzando il linguaggio specifico del dominio nei progetti in cui è necessaria. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 non attiva il supporto AIDL per impostazione predefinita. Devi specificare questa opzione utilizzando il linguaggio specifico del dominio nei progetti in cui ti serve. È prevista la rimozione di questo flag in AGP 9.0. |
android.defaults.buildfeatures.renderscript |
false |
true |
AGP 8.0 non attiva il supporto di RenderScript per impostazione predefinita. Devi specificare questa opzione utilizzando il linguaggio specifico del dominio nei progetti in cui è necessaria. Questo flag verrà rimosso in AGP 9.0. |
android.nonFinalResIds |
true |
false |
AGP 8.0 genera classi R con campi non finali per impostazione predefinita. |
android.nonTransitiveRClass |
true |
false |
AGP 8.0 genera classi R solo per le risorse definite nel modulo corrente. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 abilita la modalità completa R8 per impostazione predefinita. Per maggiori dettagli, vedi Modalità completa R8. |
Modifiche che causano interruzioni: valori delle opzioni di build applicati
A partire da AGP 8.0, non puoi più modificare i valori di questi flag. Se
li specifichi nel file gradle.properties
, il valore viene ignorato e AGP
stampa avvisi.
Segnala | Valore applicato | Note |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
AGP 8.0 genera un avviso se rileva la risoluzione della configurazione durante la fase di configurazione, perché influisce negativamente sui tempi di configurazione di Gradle. |
android.r8.failOnMissingClasses |
true |
AGP 8.0 non riesce a creare build che utilizzano R8 se mancano classi per
garantire una migliore ottimizzazione DEX. Per risolvere il problema, devi aggiungere le
librerie mancanti o le regole di conservazione -dontwarn . Per maggiori dettagli,
vedi
Avvisi relativi alle classi mancanti nel riduttore R8. |
android.testConfig.useRelativePath |
true |
Quando è attivato il supporto per l'utilizzo di risorse, asset e manifest Android nei
test delle unità, AGP 8.0 genera un
file test_config.properties che contiene solo percorsi
relativi. In questo modo, i test delle unità Android possono sempre utilizzare la cache di build di Gradle. |
android.useNewJarCreator |
true |
AGP utilizza la libreria Zipflinger durante la creazione di file JAR per migliorare le prestazioni di build. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Quando l'aggiunta delle informazioni sulle dipendenze SDK in AAB e APK è abilitata, AGP 8.0 aggiunge anche un elenco di repository del progetto a queste informazioni. Per scoprire di più, consulta Informazioni sulle dipendenze per Play Console. |
android.enableArtProfiles |
true |
Ora i profili di base vengono sempre generati. Per i dettagli, consulta Profili di base. |
android.enableNewResourceShrinker |
true |
Utilizza la nuova implementazione di riduzione delle risorse per impostazione predefinita. Il nuovo riduttore di risorse include il supporto per le funzionalità dinamiche. |
android.enableSourceSetPathsMap |
true |
Utilizzato per calcolare le mappature dei percorsi delle risorse relative, in modo che le build Gradle siano aggiornate più spesso. |
android.cacheCompileLibResources |
true |
Ora le risorse della libreria compilate possono essere memorizzate nella cache per impostazione predefinita perché Gradle
monitora i file delle risorse rispetto alla posizione del progetto. Richiede
l'attivazione di android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
AGP 8.0 non crea SoftwareComponent per impostazione predefinita. AGP crea invece SoftwareComponent solo per le varianti configurate per la pubblicazione utilizzando il DSL di pubblicazione. |
Nuovo flag stabile per il profilo di esecuzione
AGP include il nuovo flag android.settings.executionProfile
. Utilizza questo flag per
ignorare il profilo di esecuzione predefinito di
SettingsExtension
.
Per saperne di più, consulta la documentazione del plug-in delle impostazioni.
Per visualizzare l'anteprima dei flag sperimentali, consulta le note di rilascio dell'anteprima.
Assegnazione di proprietà Kotlin lazy non supportata
Se utilizzi Kotlin DSL di Gradle per gli script di build, tieni presente che Android
Studio e AGP 8.0 non supportano l'assegnazione sperimentale di proprietà utilizzando l'operatore
=
. Per saperne di più su questa funzionalità, consulta le
note di rilascio
e la
documentazione.
Categorie di attività di Build Analyzer
A partire da Android Studio Flamingo, Build Analyzer ha una nuova visualizzazione predefinita per le attività che influiscono sulla durata della build. Se il tuo progetto utilizza AGP 8.0 o versioni successive, anziché visualizzare le attività singolarmente, Build Analyzer le raggruppa per categoria. Ad esempio, le attività specifiche per le risorse Android, Kotlin o Dexing sono raggruppate e poi ordinate in base alla durata della build. In questo modo è facile sapere quale categoria ha il maggiore impatto sul tempo di compilazione. Se espandi ogni categoria, viene visualizzato un elenco delle attività corrispondenti. Per visualizzare le attività singolarmente, senza raggrupparle, utilizza il menu a discesa Raggruppa per.
Nuovo plug-in delle impostazioni
AGP 8.0.0-alpha09 introduce il nuovo plug-in delle impostazioni. Il plug-in delle impostazioni ti consente di centralizzare le configurazioni globali, ovvero quelle che si applicano a tutti i moduli, in un unico posto, in modo da non dover copiare e incollare le configurazioni in più moduli. Inoltre, puoi utilizzare il plug-in delle impostazioni per creare profili di esecuzione degli strumenti o istruzioni diverse per l'esecuzione di uno strumento e passare da uno all'altro.
Per utilizzare il plug-in delle impostazioni, applicalo nel file settings.gradle
:
apply plugin 'com.android.settings'
Centralizzare le configurazioni globali
Per configurare le configurazioni globali, utilizza il nuovo blocco android
nel file
settings.gradle
. Ecco un esempio:
android {
compileSdk 31
minSdk 28
...
}
Profili di esecuzione degli strumenti
Il plug-in delle impostazioni consente anche di creare profili di esecuzione per alcuni strumenti. Un profilo di esecuzione determina la modalità di esecuzione di uno strumento. Puoi selezionare profili di esecuzione diversi a seconda dell'ambiente. In un profilo di esecuzione, puoi impostare gli argomenti JVM per uno strumento e configurarlo per l'esecuzione in un processo separato. Al momento è supportato solo lo strumento R8.
Crea profili di esecuzione e imposta il profilo di esecuzione predefinito nel file
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 ignorare il profilo predefinito, seleziona un profilo diverso utilizzando la proprietà
android.experimental.settings.executionProfile
nel file
gradle.properties
:
android.experimental.settings.executionProfile=high
Puoi impostare questa proprietà anche utilizzando la riga di comando, che ti consente di configurare
diversi flussi di lavoro. Ad esempio, se hai un flusso di lavoro di integrazione continua, puoi utilizzare la riga di comando per modificare il profilo di esecuzione senza dover modificare il file settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
Per eseguire AGP 8.0 è richiesto JDK 17
Quando utilizzi il plug-in Android per Gradle 8.0 per creare la tua app, ora è necessario JDK 17 per eseguire Gradle. Android Studio Flamingo include JDK 17 e configura Gradle per utilizzarlo per impostazione predefinita, il che significa che la maggior parte degli utenti di Android Studio non deve apportare modifiche alla configurazione dei propri progetti.
Se devi impostare manualmente la versione di JDK utilizzata da AGP in Android Studio, devi utilizzare JDK 17 o versioni successive.
Quando utilizzi AGP indipendentemente da Android Studio, esegui l'upgrade della versione JDK impostando la JAVA_HOME
variabile di ambiente
o l'-Dorg.gradle.java.home
opzione della riga di comando
alla directory di installazione di JDK 17.
Problemi risolti
Plug-in Android per Gradle 8.0.0
Problemi risolti | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Plug-in Android per Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pelucchi |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integrazione di Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Shrinker (R8) |
|
Plug-in Android per Gradle 8.0.1
Problemi risolti | ||||
---|---|---|---|---|
Shrinker (R8) |
|
Plug-in Android per Gradle 8.0.2
Problemi risolti | |||||
---|---|---|---|---|---|
Shrinker (R8) |
|