Note di rilascio dell'anteprima del plug-in Android per Gradle

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.
falsetrue 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. falsetrue 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. falsetrue 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.
truefalse 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.
falsetrue 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.
falsetrue 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.
falsetrue 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. falsetrue 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. falsetrue 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>(); }
falsetrue 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 truefalse 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à:

DSL modificato

Il plug-in Android per Gradle 9.0 presenta le seguenti modifiche DSL che causano interruzioni:

DSL rimossa

Il plug-in Android per Gradle 9.0 rimuove:

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
  }
}
nel file di build Gradle di ogni progetto secondario contenente origini AIDL
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.