Plug-in Android Gradle 4.2.0 (mars 2021)
Compatibilité
Version minimale | Version par défaut | Notes | |
---|---|---|---|
Gradle | 6.7.1 | N/A | Pour en savoir plus, consultez Mettre à jour Gradle. |
Build Tools SDK | 30.0.2 | 30.0.2 | Installez ou configurez des Build Tools SDK. |
NDK | N/A | 21.4.7075529 | Installez ou configurez une autre version du NDK. |
Nouvelles fonctionnalités
Cette version du plug-in d'Android Gradle inclut les nouvelles fonctionnalités suivantes.
Langage Java version 8 par défaut
À partir de la version 4.2, l'AGP utilisera le niveau de langage Java 8 par défaut. Java 8 permet d'accéder à un certain nombre de fonctionnalités de langage plus récentes, y compris le lambda. les expressions, les références de méthodes et les méthodes d'interface statiques. Pour voir la liste complète des fonctionnalités compatibles, consultez la documentation Java 8.
Pour conserver l'ancien comportement, spécifiez explicitement Java 7 au niveau de votre module.
Fichier build.gradle.kts
ou 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"
}
}
Nouveau compilateur de ressources JVM
Un nouveau compilateur de ressources JVM dans l'outil 4.2 du plug-in Android Gradle remplace des parties du compilateur de ressources AAPT2, améliorant les performances de compilation, en particulier sur les machines Windows. La nouvelle JVM le compilateur de ressources est activé par défaut.
Signature v3 et v4 désormais compatible
Le plug-in Android Gradle 4.2 est désormais compatible avec l'APK v3.
et les formats de signature APK v4.
Pour activer l'un de ces formats ou les deux dans votre
Compilez, ajoutez les propriétés suivantes à votre build.gradle
au niveau du module.
ou build.gradle.kts
:
// build.gradle
android {
...
signingConfigs {
config {
...
enableV3Signing true
enableV4Signing true
}
}
}
// build.gradle.kts
android {
...
signingConfigs {
config {
...
enableV3Signing = true
enableV4Signing = true
}
}
}
La signature APK v4 vous permet de déployer rapidement des APK volumineux à l'aide d'ADB Installation incrémentielle d'APK Android 11. Ce nouvel indicateur se charge de l'étape de signature de l'APK dans le déploiement processus.
Configurer la signature d'application selon la variante
Vous pouvez désormais activer ou désactiver la signature d'application dans Android Gradle. pour chaque variante.
Cet exemple montre comment définir la signature d'application par variante à l'aide de la
onVariants()
en Kotlin ou en Groovy:
androidComponents {
onVariants(selector().withName("fooDebug"), {
signingConfig.enableV1Signing.set(false)
signingConfig.enableV2Signing.set(true)
})
Nouvelle propriété Gradle:
android.native.buildOutput
Pour réduire l'encombrement dans la sortie de compilation, AGP 4.2 filtre les messages
à partir de builds natifs qui utilisent CMake et ndk-build
;
n'affiche que la sortie du compilateur C/C++ par défaut. Auparavant, une ligne de sortie
était généré pour chaque fichier créé, ce qui générait une grande quantité
messages d'information.
Si vous souhaitez voir la sortie native dans son intégralité, définissez la nouvelle valeur
Propriété Gradle android.native.buildOutput
sur verbose
.
Vous pouvez définir cette propriété dans le fichier gradle.properties
ou via la
de la ligne de commande.
gradle.properties
android.native.buildOutput=verbose
Ligne de commande
-Pandroid.native.buildOutput=verbose
La valeur par défaut de cette propriété est quiet
Modification du comportement des fichiers gradle.properties
À partir de la version 4.2 de l'AGP, il n'est plus possible de remplacer les propriétés Gradle
à partir de sous-projets. En d'autres termes, si vous déclarez une propriété dans une
gradle.properties
dans un sous-projet plutôt que dans la racine
il sera ignoré.
Par exemple, dans les versions précédentes, AGP lit les valeurs
<var>projectDir</var>/gradle.properties
,
<var>projectDir</var>/app/gradle.properties
,
<var>projectDir</var>/library/gradle.properties
,
Pour les modules d'application, si la même propriété Gradle était présente dans les deux
<var>projectDir</var>/gradle.properties
et
<var>projectDir</var>/app/gradle.properties
,
la valeur de
<var>projectDir</var>/app/gradle.properties
prévaut.
Dans AGP 4.2, ce comportement a été modifié et l'AGP ne chargera pas les valeurs depuis
gradle.properties
dans les sous-projets (par exemple,
<var>projectDir</var>/app/gradle.properties
).
Cette modification reflète
nouveau comportement de Gradle et prend en charge
mise en cache de la configuration
Pour en savoir plus sur la définition des valeurs dans gradle.properties
, consultez les
Documentation Gradle.
Compatibilité avec Gradle et modifications de configuration
Lorsqu'il s'exécute dans Android Studio, l'outil de compilation Gradle utilise le JDK fourni par Studio. Dans les versions précédentes, JDK 8 était fourni avec Studio. Dans la version 4.2, cependant, JDK 11 est désormais fourni à la place. L'utilisation du nouveau JDK fourni pour exécuter Gradle peut entraîner une incompatibilité ou une incidence sur les performances de la JVM en raison de modifications apportées au récupérateur de mémoire. Ces problèmes sont décrits ci-dessous.
Remarque:Bien que nous vous recommandions d'exécuter Gradle avec JDK 11, qu'il est possible de modifier le JDK utilisé pour exécuter Gradle Structure du projet . La modification de ce paramètre ne modifie que le JDK utilisé pour exécuter Gradle. ne modifie pas le JDK utilisé pour exécuter Studio lui-même.
Compatibilité de Studio avec Android Plug-in Gradle (AGP)
Android Studio 4.2 peut ouvrir des projets qui utilisent AGP 3.1 et à condition qu'AGP exécute Gradle 4.8.1 ou version ultérieure. Pour plus sur la compatibilité avec Gradle, consultez Mettez à jour Gradle.
Optimiser les builds Gradle pour JDK 11
Cette mise à jour de JDK 11 a une incidence sur la configuration par défaut de la mémoire cache de la JVM car JDK 8 utilise le récupérateur de mémoire parallèle, alors que JDK 11 utilise récupérateur de mémoire G1
Pour améliorer les performances de compilation,
tester vos compilations Gradle avec la
un récupérateur de mémoire parallèle. Dans gradle.properties
, définissez les paramètres suivants :
org.gradle.jvmargs=-XX:+UseParallelGC
Si d'autres options sont déjà définies dans ce champ, ajoutez une nouvelle option :
org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC
Pour mesurer la vitesse de compilation avec différentes configurations, consultez Profilez votre build.
Fichiers DEX non compressés dans les APK si la valeur de minSdk
est égale ou supérieure à 28
L'AGP regroupe désormais les fichiers DEX non compressés dans les APK par défaut lorsque minSdk
= 28 ou
plus élevée. Cela entraîne une augmentation de la taille de l'APK, mais réduit
d'installation sur l'appareil et la taille de téléchargement est à peu près identique.
Pour forcer AGP à empaqueter à la place les fichiers DEX compressés, vous pouvez ajouter le
dans le fichier build.gradle
:
android {
packagingOptions {
dex {
useLegacyPackaging true
}
}
}
Utiliser le DSL pour regrouper des bibliothèques natives compressées
Nous vous recommandons d'empaqueter les bibliothèques natives dans un format non compressé, car cela
réduit la taille d'installation de l'application, la taille de téléchargement de l'application et la rapidité
pour vos utilisateurs. Toutefois, si vous souhaitez que le plug-in Android Gradle
empaqueter des bibliothèques natives compressées lors de la création de votre application, définissez
useLegacyPackaging
à true
dans le fichier build.gradle
de votre application:
android {
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
L'indicateur useLegacyPackaging
remplace l'attribut manifeste extractNativeLibs
. Pour en savoir plus, consultez les notes de version
Bibliothèques natives empaquetées non compressées par défaut :