Je vois que le Android plug-in de Gradle a une propriété minifyEnabled
ainsi qu'une propriété useProguard
, comme suit:
Android {
buildTypes {
debug {
minifyEnabled true
useProguard false
}
release {
minifyEnabled true
useProguard true
}
}
}
Quelle est la différence entre ces deux propriétés? Ou plutôt, quelle est la signification de chacun?
Citant de tools.Android.com :
Réduction intégrée
La version 2.0 de Android Le plug-in pour Gradle est livrée avec un rétrécisseur de code intégré expérimental, qui peut être utilisé à la place de ProGuard. Le rétrécisseur intégré prend en charge les exécutions incrémentielles rapides et vise à accélérer l'itération. Il peut être activé à l’aide de l’extrait de code suivant:
Android { buildTypes { debug { minifyEnabled true useProguard false proguardFiles getDefaultProguardFile('proguard-Android.txt') } } }
Le shrinker intégré ne peut que supprimer le code mort, il ne dissimule ni n'optimise. Il peut être configuré à l'aide des mêmes fichiers que ProGuard, mais ignorera tous les indicateurs liés à l'obscurcissement ou à l'optimisation.
Contrairement à ProGuard, nous prenons en charge l’utilisation du retrait intégré avec Instant Run: selon le projet, le temps de construction et d’installation initiale peut être considérablement réduit. Toutes les méthodes qui deviennent accessibles après un changement de code apparaîtront comme nouvellement ajoutées au programme et empêcheront un échange instantané instantané.
Il suffit d'activer minifyEnabled
pour que le code soit optimisé et obscurci. Ceci est dû au fait useProguard true
est la valeur par défaut, il n'est donc pas nécessaire de le définir explicitement.
Voir aussi: obscurcissement dans Android Studio
Vous n'avez pas besoin de useProguard true
plus.
La réduction de code avec R8 est activée par défaut lorsque vous définissez la propriété minifyEnabled
sur true.
Lorsque vous générez votre projet à l'aide de Android plug-in Gradle 3.4.0 ou supérieur , le plug-in n'utilise plus ProGuard pour s'exécuter. Optimisation du code à la compilation. Au lieu de cela, le plugin fonctionne avec le compilateur R8 pour gérer les tâches selon le document officiel .
Si vous souhaitez utiliser ProGuard au lieu de R8. Ajouter cette ligne dans le fichier gradle.properties
Android.enableR8=false