Il plug-in Android per Gradle 8.0.0 è una release importante 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 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. |
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 Android Studio 2022.2.1 closed issues.
Plug-in Android per Gradle 8.0.1 (maggio 2023)
Questo aggiornamento minore include le seguenti correzioni di bug:
Problemi risolti | |
---|---|
Errore: "Nessun VersionRequirement con l'ID specificato nella tabella" dopo l'upgrade di AGP 7.2.2 -> 7.4.0
|
|
R8 NullPointerException in markTypeAsLive AGP 7.4.1
|
|
[R8 4.0.53] Errore di verifica della classe difficile su Android 11
|
Modifica incompatibile: spazio dei nomi obbligatorio nello script di compilazione 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ù, consulta
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 erroneamente lo spazio dei nomi del test dallo spazio dei nomi principale o dall'ID applicazione in alcuni casi. L'Assistente all'upgrade di AGP blocca l'upgrade se rileva che lo spazio dei nomi principale e quello di test del progetto sono uguali. Se l'upgrade è bloccato, devi modificare manualmente
testNamespace
e modificare di conseguenza il codice sorgente. - Dopo aver modificato lo spazio dei nomi del test, è possibile che il codice venga compilato, ma i test con strumenti non vadano a buon fine in fase di esecuzione. Ciò può accadere se il codice sorgente del test instrumentato fa riferimento a una risorsa definita sia nelle origini
androidTest
sia nelle origini dell'app.
Per ulteriori informazioni, consulta issue #191813691 comment #19.
Modifiche non compatibili: valori predefiniti dell'opzione di compilazione
A partire da AGP 8.0, i valori predefiniti di questi flag sono stati modificati per migliorare il rendimento della compilazione. Per ricevere assistenza per modificare il codice in modo da supportare alcune di queste modifiche, utilizza l'Assistente all'upgrade di AGP (Strumenti > Assistente all'upgrade di AGP). L'Assistente all'upgrade ti guida nell'aggiornamento del codice per adattarlo al nuovo comportamento o nell'impostazione di flag per preservare 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 DSL nei progetti in cui ti serve. |
android.defaults.buildfeatures.aidl |
false |
true |
AGP 8.0 non abilita il supporto di AIDL per impostazione predefinita. Devi specificare questa opzione utilizzando il DSL 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 DSL nei progetti in cui ti serve. È prevista la rimozione di questo flag 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 per le risorse definite solo nel modulo corrente. |
android.enableR8.fullMode |
true |
false |
AGP 8.0 attiva la modalità completa R8 per impostazione predefinita. Per maggiori dettagli, consulta Modalità completa R8. |
Modifiche non compatibili: valori delle opzioni di compilazione forzate
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 emette 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 compilare le build che utilizzano R8 se mancano classi per
garantire una migliore ottimizzazione DEX. Per risolvere il problema, devi aggiungere le raccolte mancanti o le regole di mantenimento -dontwarn . Per maggiori dettagli,
consulta
Avvisi mancanti sulla classe nello shrinker R8. |
android.testConfig.useRelativePath |
true |
Quando è abilitato il supporto per l'utilizzo di risorse, asset e manifest di Android nei
test di unità, AGP 8.0 genera un
file test_config.properties contenente solo percorsi
relativi. In questo modo, i test delle unità Android possono sempre utilizzare la cache di compilazione di Gradle. |
android.useNewJarCreator |
true |
AGP utilizza la libreria Zipflinger per creare file JAR al fine di migliorare il rendimento della compilazione. |
android.bundletool.includeRepositoriesInDependencyReport |
true |
Quando l'aggiunta delle informazioni sulle dipendenze SDK in AAB e APK è attivata, AGP 8.0 aggiunge a queste informazioni anche un elenco di repository del progetto. Per approfondire, consulta Informazioni sulle dipendenze per Play Console. |
android.enableArtProfiles |
true |
Ora i profili di riferimento vengono sempre generati. Per informazioni dettagliate, consulta Profili di riferimento. |
android.enableNewResourceShrinker |
true |
Utilizza la nuova implementazione di risorse più piccole per impostazione predefinita. Il nuovo ridimensionatore delle risorse include il supporto delle funzionalità dinamiche. |
android.enableSourceSetPathsMap |
true |
Viene utilizzato per calcolare le mappature dei percorsi delle risorse relative, in modo che le compilazioni di 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 SoftwareComponents 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 eseguire l'override del profilo di esecuzione predefinito da SettingsExtension
.
Per scoprire di più, consulta la documentazione del plug-in delle impostazioni.
Per visualizzare l'anteprima dei flag sperimentali, consulta le note di rilascio della versione di anteprima.
L'assegnazione della proprietà lazy di Kotlin non è supportata
Se utilizzi il DSL Kotlin di Gradle per gli script di compilazione, tieni presente che Android Studio e AGP 8.0 non supportano l'assegnazione sperimentale delle proprietà tramite 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 compilazione. Se il tuo progetto utilizza AGP 8.0 o versioni successive, invece di visualizzare le attività singolarmente, Build Analyzer le raggruppa per categoria. Ad esempio, le attività specifiche per le risorse Android, Kotlin o il dexing vengono raggruppate e poi ordinate in base alla durata della compilazione. In questo modo è facile sapere quale categoria ha l'impatto maggiore sui tempi di compilazione. L'espansione di ogni categoria consente di visualizzare un elenco delle attività corrispondenti. Per visualizzare le attività singolarmente, senza raggrupparle, utilizza il menu a discesa Raggruppa per.
Nuovo plug-in di impostazioni
AGP 8.0.0-alpha09 introduce il nuovo plug-in delle impostazioni. Il plug-in delle impostazioni consente di centralizzare le configurazioni globali, ovvero quelle che si applicano a tutti i moduli, in un unico posto in modo da non doverle copiare e incollare in più moduli. Inoltre, puoi utilizzare il plug-in delle impostazioni per creare profili di esecuzione degli strumenti o istruzioni diverse su come eseguire 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
settings.gradle
file. Ecco un esempio:
android {
compileSdk 31
minSdk 28
...
}
Profili di esecuzione dello strumento
Il plug-in delle impostazioni ti consente anche di creare profili di esecuzione per alcuni strumenti. Un profilo di esecuzione determina in che modo viene eseguito uno strumento. Puoi selezionare diversi profili di esecuzione 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 i profili di esecuzione e imposta quello predefinito nel
settings.gradle
file, 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 sostituire il profilo predefinito, selezionane un altro 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, il 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
JDK 17 necessario per eseguire AGP 8.0
Quando utilizzi il plug-in Android per Gradle 8.0 per compilare la tua app, ora è necessario JDK 17 per eseguire Gradle. Android Studio Flamingo include JDK 17 e configura Gradle per usarlo per impostazione predefinita, il che significa che la maggior parte degli utenti di Android Studio non deve apportare alcuna modifica alla configurazione dei propri progetti.
Se devi impostare manualmente la versione 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 a riga di comando
nella 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) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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) |
|