Plug-in Android per Gradle 8.0.0 (aprile 2023)

Il plug-in Android per Gradle 8.0.0 è una versione principale 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 visualizzarle singolarmente, lo strumento di analisi Creazione le raggruppa per categoria. Ad esempio, attività specifiche per Risorse Android, Kotlin o Dexing vengono raggruppati e poi ordinati 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.

Categorie di attività di Analizzatore build.

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.