Android Gradle Plugin 4.2.0 (marzo 2021)
Compatibilità
Versione minima | Versione predefinita | Note | |
---|---|---|---|
Gradle | 6.7.1 | N/D | Per scoprire di più, consulta la sezione sull'aggiornamento di Gradle. |
Strumenti per la creazione dell'SDK | 30.0.2 | 30.0.2 | Installa o configura gli strumenti di creazione dell'SDK. |
NDK | N/D | 21,4.7075529 | Installa o configura una versione diversa dell'NDK. |
Nuove funzionalità
Questa versione del plug-in Android per Gradle include le nuove funzionalità riportate di seguito.
Versione 8 del linguaggio Java per impostazione predefinita
A partire dalla versione 4.2, AGP utilizzerà per impostazione predefinita il livello del linguaggio Java 8. Java 8 dà accesso a una serie di funzionalità del linguaggio più recenti, tra cui lambda espressioni, riferimenti a metodi e metodi di interfaccia statici. Per l'elenco completo delle funzionalità supportate, consulta la documentazione di Java 8.
Per mantenere il comportamento precedente, specifica Java 7 esplicitamente nella
File build.gradle.kts
o build.gradle
:
// build.gradle
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
// build.gradle.kts
android {
...
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
// For Kotlin projects, compile to Java 6 instead of 7
kotlinOptions {
jvmTarget = "1.6"
}
}
Nuovo compilatore di risorse JVM
Un nuovo compilatore di risorse JVM nello strumento del plug-in Android 4.2 per Gradle sostituisce le parti del compilatore di risorse AAPT2, potenzialmente migliorando le prestazioni delle build, soprattutto sui computer Windows. La nuova JVM il compilatore di risorse è abilitato per impostazione predefinita.
Ora è supportata la firma v3 e v4
Il plug-in Android Gradle 4.2 ora supporta APK v3
e APK v4.
Per attivare uno o entrambi questi formati nel tuo
build, aggiungi le seguenti proprietà al campo build.gradle
a livello di modulo
o build.gradle.kts
file:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
La firma dell'APK v4 ti consente di implementare rapidamente APK di grandi dimensioni utilizzando ADB Installazione di APK incrementale in Android 11. Questo nuovo flag si occupa del passaggio di firma dell'APK nel deployment e il processo di sviluppo.
Configurare la firma dell'app per variante
Ora è possibile attivare o disattivare la firma dell'app in Android Gradle per variante.
Questo esempio mostra come impostare la firma dell'app per variante utilizzando il metodo
onVariants()
in Kotlin o Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Nuova proprietà Gradle:
android.native.buildOutput
Per ridurre il disordine nell'output della build, AGP 4.2 filtra i messaggi
da build native che utilizzano CMake e ndk-build
,
che mostra solo l'output del compilatore C/C++ per impostazione predefinita. In precedenza, una riga di output
per ogni file creato, generando un'enorme quantità
messaggi informativi.
Se vuoi vedere l'output nativo nella sua interezza, imposta il nuovo valore
Proprietà Gradle da android.native.buildOutput
a verbose
.
Puoi impostare questa proprietà nel file gradle.properties
o tramite la
dall'interfaccia a riga di comando.
gradle.properties
android.native.buildOutput=verbose
Riga di comando
-Pandroid.native.buildOutput=verbose
Il valore predefinito di questa proprietà è quiet
.
Modifica del comportamento per i file gradle.properties
A partire da AGP 4.2, non è più possibile eseguire l'override delle proprietà Gradle
dai progetti secondari. In altre parole, se dichiari una proprietà in un
gradle.properties
in un sottoprogetto al posto della radice
progetto, verrà ignorato.
Ad esempio, nelle versioni precedenti, AGP leggeva i valori
<var>projectDir</var>/gradle.properties
,
<var>projectDir</var>/app/gradle.properties
,
<var>projectDir</var>/library/gradle.properties
,
E così via. Per i moduli dell'app, se la stessa proprietà Gradle era presente in entrambi
<var>projectDir</var>/gradle.properties
e
<var>projectDir</var>/app/gradle.properties
,
il valore da
<var>projectDir</var>/app/gradle.properties
avrà la precedenza.
In AGP 4.2, questo comportamento è stato modificato e AGP non caricherà i valori da
gradle.properties
nei progetti secondari (ad es.
<var>projectDir</var>/app/gradle.properties
).
Questa modifica riflette
nuovo comportamento di Gradle e supporta
memorizzazione nella cache di configurazione
Per ulteriori informazioni sull'impostazione dei valori in gradle.properties
vedi i file
Documenti di Gradle.
Modifiche alla configurazione e alla compatibilità di Gradle
Quando viene eseguito in Android Studio, lo strumento di creazione Gradle utilizza JDK in bundle di Studio. Nelle versioni precedenti, JDK 8 era abbinato a Studio. Nella versione 4.2, tuttavia, JDK 11 è ora invece in bundle. Quando utilizzi il nuovo JDK in bundle per l'esecuzione Gradle, ciò potrebbe causare incompatibilità o influire sulle prestazioni della JVM. a causa di modifiche al garbage collector. Questi problemi sono descritti di seguito.
Nota: anche se consigliamo di eseguire Gradle con JDK 11, modificare il JDK usato per eseguire Gradle Struttura del progetto . La modifica di questa impostazione cambierà solo il JDK utilizzato per eseguire Gradle, e non modificherà il JDK usato per eseguire Studio.
Compatibilità di Studio con Android Plug-in Gradle (AGP)
Android Studio 4.2 può aprire progetti che utilizzano AGP 3.1 e a condizione che AGP esegua Gradle 4.8.1 e versioni successive. Per ulteriori informazioni informazioni sulla compatibilità con Gradle, consulta Aggiorna Gradle.
Ottimizzazione delle build Gradle per JDK 11
Questo aggiornamento a JDK 11 influisce sulla configurazione predefinita della garbage JVM in quanto JDK 8 utilizza il garbage collector parallelo mentre JDK 11 utilizza il Garbage Collector G1.
Per migliorare potenzialmente le prestazioni delle build, ti consigliamo
testare le build di Gradle con
garbage collector parallelo. In gradle.properties
imposta quanto segue:
org.gradle.jvmargs=-XX:+UseParallelGC
Se in questo campo sono già impostate altre opzioni, aggiungi una nuova opzione:
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Per misurare la velocità di creazione con configurazioni diverse, consulta Profila la build.
File DEX non compressi negli APK quando minSdk
= 28 o versioni successive
AGP ora pacchettizza i file DEX non compressi negli APK per impostazione predefinita quando minSdk
= 28 o
in alto. Questo determina un aumento delle dimensioni dell'APK, ma comporta una riduzione
di installazione sul dispositivo e quelle di download
sono più o meno le stesse.
Per forzare AGP a pacchettizzare i file DEX compressi, puoi aggiungere
seguenti al tuo file build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Utilizzare DSL per creare pacchetti di librerie native compresse
Consigliamo di pacchettizzare le librerie native in formato non compresso,
riduce le dimensioni di installazione dell'app, le dimensioni di download dell'app e la velocità
il tempo di caricamento per i tuoi utenti. Se invece vuoi che il plug-in Android Gradle
pacchetti di librerie native compresse durante la creazione dell'app,
useLegacyPackaging
a true
nel file build.gradle
dell'app:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Il flag useLegacyPackaging
sostituisce l'attributo del file manifest extractNativeLibs
. Per ulteriori informazioni, consulta la nota di rilascio
Librerie native pacchettizzate in modo non compresso per impostazione predefinita.