web-dev-qa-db-fra.com

Quelle est la différence entre "minifyEnabled" et "useProguard" dans le Android plug-in de Gradle?

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?

48
Adil Hussain

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é.

48

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

3
user8100646

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
2
Allen