Questa pagina contiene le note di rilascio per le versioni di anteprima del plug-in Android Gradle (AGP).
Plug-in Android per Gradle 9.0
Il plug-in Android per Gradle 9.0 è una nuova versione principale di AGP e introduce modifiche al comportamento e alle API.
Per eseguire l'aggiornamento al plug-in Android per Gradle 9.0.0-alpha04, utilizza Android Gradle Plugin Upgrade Assistant in Android Studio Narwhal 4 Feature Drop | 2025.1.4.
L'assistente per l'upgrade di AGP aiuta a preservare i comportamenti esistenti durante l'upgrade del progetto, se appropriato, consentendoti di eseguire l'upgrade del progetto per utilizzare AGP 9.0, anche se non sei pronto ad adottare tutti i nuovi valori predefiniti di AGP 9.0.
Compatibilità
Il livello API Android massimo supportato dal plug-in Android per Gradle 9.0.0-alpha04 è il livello API 36.
Il plug-in Android per Gradle 9.0.0-alpha04 richiede Gradle 9.0.0.
Versione minima | Versione predefinita | Note | |
---|---|---|---|
Gradle | 9.0.0 | 9.0.0 | Per scoprire di più, consulta la sezione Aggiornare Gradle. |
Strumenti di compilazione SDK | 36.0.0 | 36.0.0 | Installa o configura gli strumenti di creazione dell'SDK. |
NDK | N/D | 28.2.13676358 | Installa o configura una versione diversa dell'NDK. |
JDK | 17 | 17 | Per saperne di più, vedi Impostare la versione di JDK. |
Le implementazioni DSL interne e l'API variante ritirata ora richiedono l'attivazione esplicita
Il plug-in Android Gradle ora ha una superficie API definita, con le API supportate
definite nell'artefatto Maven com.android.tools.build:gradle-api
.
Per la compatibilità con i plug-in binari e gli script di build esistenti, le precedenti
implementazioni DSL precedenti alla superficie API definita erano ancora esposte
per impostazione predefinita in AGP 8.13 e versioni precedenti. In questo modo, il codice nei plug-in Gradle e negli script di build può accedere sia ai dettagli di implementazione interni del DSL sia alle API android.applicationVariants
, android.libraryVariants
, android.testVariants
e android.unitTestVariants
deprecate, che verranno rimosse nel 2026 in AGP 10.
Per rendere più visibile questa transizione, sia l'API variante legacy sia il DSL interno non sono accessibili per impostazione predefinita nel plug-in Android per Gradle 9.0.0-alpha04.
Puoi riattivare l'utilizzo dell'API obsoleta impostando
android.newDsl=false
in gradle.properties
.
Durante la serie alpha 9.0, contatteremo gli autori di plug-in per aiutarli ad adattare e rilasciare plug-in completamente compatibili con le nuove modalità e miglioreremo l'assistente per l'upgrade di AGP in Android Studio per guidarti durante la migrazione.
Kotlin integrato
Il plug-in Android per Gradle 9 include il supporto integrato per la compilazione di Kotlin, sostituendo il plug-in Kotlin applicato separatamente. Ciò semplifica l'integrazione con AGP, evitando l'utilizzo delle API ritirate e migliorando le prestazioni in alcuni casi.
Il plug-in Android per Gradle 9 ha una dipendenza di runtime dal plug-in Kotlin per Gradle 2.2.0, che è la versione minima richiesta per il supporto integrato di Kotlin.
Puoi disattivare Kotlin integrato impostando
android.builtInKotlin=false
.
Se hai disattivato la funzionalità e devi anche utilizzare una versione precedente del plug-in Gradle di Kotlin, puoi forzare il downgrade
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("2.0.0") } // or another version that you want to use
}
}
}
Modifiche al comportamento
Il plug-in Android per Gradle 9.0 ha i seguenti nuovi comportamenti:
Comportamento | Consiglio |
---|---|
Il plug-in Android per Gradle 9.0 utilizza la versione r28c dell'NDK per impostazione predefinita.
|
Valuta la possibilità di specificare in modo esplicito la versione dell'NDK che vuoi utilizzare. |
Il plug-in Android Gradle 9.0 richiede per impostazione predefinita che i consumatori di una libreria utilizzino la stessa versione dell'SDK di compilazione o una versione successiva. |
Utilizza lo stesso SDK di compilazione o una versione successiva quando utilizzi una libreria.
Se non è possibile o se vuoi dare più tempo ai consumatori di una libreria che
pubblichi per passare a un'altra, imposta
AarMetadata.minCompileSdk
in modo esplicito.
|
AGP 9.0 include aggiornamenti ai valori predefiniti delle seguenti proprietà di Gradle. In questo modo, durante l'upgrade puoi scegliere di mantenere il comportamento di AGP 8.13:
Proprietà | Funzione | Passaggio da AGP 8.13 ad AGP 9.0 | Consiglio |
---|---|---|---|
android.newDsl |
Utilizza le nuove interfacce DSL senza esporre le implementazioni legacy
del blocco android .Ciò significa anche che l'API legacy per le varianti, ad esempio android.applicationVariants
non è più accessibile.
|
false → true |
Puoi disattivare questa opzione impostando
android.newDsl=false .Una volta che tutti i plug-in e la logica di build utilizzati dal tuo progetto sono compatibili, rimuovi l'opt-out. |
android.builtInKotlin |
È stato attivato il supporto per la compilazione del codice Kotlin direttamente nel plug-in Android Gradle, senza il plug-in org.jetbrains.kotlin.android .
|
false → true |
Adotta Kotlin integrato rimuovendo l'utilizzo del plug-in
org.jetbrains.kotlin.android , se possibile.
In caso contrario, disattiva l'opzione impostando android.builtInKotlin=false
|
android.uniquePackageNames |
Impone che ogni libreria abbia un nome di pacchetto distinto. | false → true |
Specifica nomi di pacchetti univoci per tutte le librerie all'interno del progetto. Se non è possibile, puoi disattivare questo flag durante la migrazione. |
android.dependency.useConstraints |
Controlla l'utilizzo dei vincoli di dipendenza tra le configurazioni. Il valore predefinito in AGP 9.0 è false , che utilizza solo i vincoli nei test dei dispositivi dell'applicazione (AndroidTest).
Se imposti questo valore su true , verrà ripristinato il comportamento della versione 8.13.
|
true → false |
Non utilizzare vincoli di dipendenza ovunque, a meno che non siano necessari. L'accettazione del nuovo valore predefinito di questo flag attiva anche le ottimizzazioni nel processo di importazione del progetto, che dovrebbe ridurre il tempo di importazione per le build con molti sottoprogetti di librerie Android. |
aandroid.enableAppCompileTimeRClass |
Compila il codice nelle applicazioni in base a una classe R non finale, allineando
la compilazione delle applicazioni a quella delle librerie. Ciò migliora l'incrementalità e apre la strada a future ottimizzazioni delle prestazioni del flusso di elaborazione delle risorse. |
false → true |
Molti progetti possono adottare il nuovo comportamento senza modifiche al codice sorgente. Se i campi della classe R vengono utilizzati in un punto che richiede una costante, ad esempio casi switch, esegui il refactoring per utilizzare istruzioni if concatenate. |
android.sdk.defaultTargetSdkToCompileSdkIfUnset |
Utilizza la versione dell'SDK di compilazione come valore predefinito per la versione dell'SDK target in app e test. Prima di questa modifica, la versione dell'SDK target veniva impostata per impostazione predefinita sulla versione dell'SDK minima. |
false → true |
Specifica esplicitamente la versione dell'SDK target per app e test. |
android.onlyEnableUnitTestForTheTestedBuildType |
Crea solo componenti di test delle unità per il tipo di build testato. Nel progetto predefinito, questo comporta un singolo test unitario per il debug, mentre il comportamento precedente prevedeva l'esecuzione di test unitari per il debug o il rilascio. |
false → true |
Se il tuo progetto non richiede l'esecuzione di test sia per il debug che per il rilascio, non è necessaria alcuna modifica. |
android.proguard.failOnMissingFiles |
La build non riesce e viene visualizzato un errore se uno dei file di conservazione specificati nel DSL AGP non esiste sul disco. Prima di questa modifica, gli errori di battitura nei nomi dei file comportavano l'ignoramento silenzioso dei file. | false → true |
Rimuovi eventuali dichiarazioni di file Proguard non validi |
android.r8.optimizedResourceShrinking |
Consente a R8 di conservare meno risorse Android considerando insieme classi e risorse Android. | false → true |
Se le regole di conservazione del progetto sono già state completate, non è necessaria alcuna modifica. |
android.r8.strictFullModeForKeepRules |
Consente a R8 di conservare meno elementi non conservando implicitamente il costruttore predefinito
quando una classe viene conservata.
ovvero -keep class A non implica più
-keep class A { <init>(); } |
false → true |
Se le regole di conservazione del progetto sono già state completate, non è necessaria alcuna modifica.
Sostituisci -keep class A
con
-keep class A { <init>(); }
nelle regole di conservazione del progetto per tutti i casi in cui è necessario conservare il costruttore predefinito.
|
android.defaults.buildfeatures.shaders |
Attiva la compilazione degli shader in tutti i sottoprogetti | true → false |
Attiva la compilazione degli shader solo nei sottoprogetti che contengono shader da
compilare impostando quanto segue nei file di build Gradle di questi progetti:
android { buildFeatures { shaders = true } } |
Funzionalità rimosse
Il plug-in Android per Gradle 9.0 rimuove le seguenti funzionalità:
- Supporto delle app Wear OS incorporate
AGP 9.0 rimuove il supporto per l'incorporamento delle app Wear OS, che non è più supportato in Google Play. Ciò include la rimozione delle configurazioniwearApp
e della DSLAndroidSourceSet.wearAppConfigurationName
. Consulta la pagina Distribuire su Wear OS per scoprire come pubblicare la tua app su Wear OS. androidDependencies
esourceSets
report attività
DSL modificato
Il plug-in Android per Gradle 9.0 presenta le seguenti modifiche DSL che causano interruzioni:
- La parametrizzazione di
CommonExtension
è stata rimossa. Di per sé, questa è solo una modifica che causa interruzioni a livello di origine per evitare future modifiche che causano interruzioni a livello di origine, ma significa anche che i metodi del blocco DSL devono passare daCommonExtension
aApplicationExtension
,LibraryExension
,DynamicFeatureExtension
eTestExtension
.
DSL rimossa
Il plug-in Android per Gradle 9.0 rimuove:
AndroidSourceSet.jni
, perché non era funzionante.AndroidSourceSet.wearAppConfigurationName
, in quanto riguarda il supporto delle app Wear OS incorporate rimosso.BuildType.isRenderscriptDebuggable
, perché non era funzionante.ComponentBuilder.enabled
. È sostituito daComponentBuilder.enable
.DependencyVariantSelection
. È sostituito daDependencySelection
, che viene esposto comekotlin.android
Installation.installOptions(String)
. È sostituito dalla proprietà modificabile diInstallation.installOptions
.VariantBuilder.targetSdk
etargetSdkPreview
, in quanto non erano significativi nelle librerie. UtilizzaGeneratesApkBuilder.targetSdk
oGeneratesApkBuilder.targetSdkPreview
in alternativa.Il blocco sperimentale, ma mai stabilizzato
PostProcessing
.ProductFlavor.setDimension
, che viene sostituita dalla proprietàdimension
LanguageSplitOptions
, che era utile solo per Google Play Instant, che è ritirato.Variant.unitTest
, in quanto non era applicabile al plug-incom.android.test
.unitTest
è disponibile sui sottotipiVariantBuilder
che estendonoHasUnitTest
.VariantBuilder.enableUnitTest
, in quanto non era applicabile al plug-incom.android.test
.enableUnitTest
è disponibile sui sottotipiVariantBuilder
che estendonoHasUnitTestBuilder
.VariantBuilder.unitTestEnabled
viene rimosso a favore dienableUnitTest
, che ha un nome più coerente nei sottotipiVariantBuilder
che estendonoHasUnitTestBuilder
.
Proprietà Gradle rimosse
Le seguenti proprietà Gradle sono state inizialmente aggiunte come modi per disattivare globalmente le funzionalità abilitate per impostazione predefinita.
Queste funzionalità sono disattivate per impostazione predefinita a partire da AGP 8.0 o versioni precedenti. Attiva queste funzionalità solo nei sottoprogetti che le utilizzano per una compilazione più efficiente.
Proprietà | Funzione | Sostituzione |
---|---|---|
android.defaults.buildfeatures.aidl |
Attiva la compilazione AIDL in tutti i progetti secondari |
Attiva la compilazione AIDL solo nei sottoprogetti in cui sono presenti
origini AIDL
impostando la seguente proprietà nei file di build Gradle di questi progetti:
android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript |
Attiva la compilazione di RenderScript in tutti i progetti secondari |
Attiva la compilazione di renderscript solo nei sottoprogetti in cui sono presenti
origini renderscript
impostando la seguente proprietà nei file di build Gradle di questi progetti:
android { buildFeatures { renderScript = true } } |
API rimosse
Il plug-in Android per Gradle 9.0 rimuove:
- Le API
BaseExtension.registerTransform
deprecate e disattivate, che sono rimaste solo per consentire la compilazione in base all'ultima versione di AGP durante il targeting dell'esecuzione su AGP 4.2 o versioni precedenti.
Proprietà Gradle applicate
AGP 9.0 genera un errore se imposti le seguenti proprietà Gradle.
L'assistente per l'upgrade del plug-in Android per Gradle non eseguirà l'upgrade dei progetti ad AGP 9.0 che utilizzano queste proprietà.
Proprietà | Funzione |
---|---|
android.r8.integratedResourceShrinking |
La riduzione delle risorse ora viene sempre eseguita nell'ambito di R8. L'implementazione precedente è stata rimossa. |