Android Réduisez votre code et vos ressources avec proguard


Exemple

Pour rendre votre fichier APK aussi petit que possible, vous devez activer la réduction pour supprimer le code et les ressources inutilisés dans votre version. Cette page décrit comment procéder et comment spécifier le code et les ressources à conserver ou à supprimer lors de la génération.

La réduction du code est disponible avec ProGuard, qui détecte et supprime les classes, champs, méthodes et attributs inutilisés de votre application packagée, y compris ceux des bibliothèques de codes incluses (ce qui en fait un outil précieux pour contourner la limite de référence de 64 Ko). ProGuard optimise également le bytecode, supprime les instructions de code inutilisées et masque les autres classes, champs et méthodes avec des noms courts. Le code brouillé rend votre APK difficile à désosser, ce qui est particulièrement utile lorsque votre application utilise des fonctionnalités de sécurité, telles que la vérification des licences.

La réduction des ressources est disponible avec le plug-in Android pour Gradle, qui supprime les ressources inutilisées de votre application packagée, y compris les ressources inutilisées des bibliothèques de codes. Cela fonctionne en conjonction avec le code réduit de telle sorte qu'une fois le code inutilisé a été supprimé, toutes les ressources qui ne sont plus référencées peuvent également être supprimées en toute sécurité.

Réduire votre code

Pour activer la réduction du code avec ProGuard , ajoutez minifyEnabled au type de génération approprié dans votre fichier build.gradle .

Sachez que la réduction du code ralentit le temps de compilation, vous devez donc éviter de l'utiliser si possible dans votre version de débogage. Cependant, il est important que vous activiez le code rétréci sur votre APK final utilisé pour les tests, car cela pourrait introduire des bogues si vous ne personnalisez pas suffisamment le code à conserver.

Par exemple, l'extrait de code suivant d'un fichier build.gradle permet de réduire le code pour la version build.gradle :

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

Outre la propriété minifyEnabled , la propriété proguardFiles définit les ProGuard rules :

La méthode getDefaultProguardFile ('proguard-android.txt') obtient les paramètres ProGuard par défaut du dossier tools/proguard/ folder SDK Android. Conseil: pour réduire encore plus le code, essayez le proguard-android-optimize.txt situé au même emplacement. Il inclut les mêmes règles ProGuard, mais avec d’autres optimisations qui effectuent des analyses au niveau du bytecode (à l’intérieur des méthodes et entre celles-ci) pour réduire davantage la taille de l’APK et accélérer son exécution. Le fichier proguard-rules.pro est l'endroit où vous pouvez ajouter des règles ProGuard personnalisées. Par défaut, ce fichier est situé à la racine du module (à côté du fichier build.gradle). Pour ajouter d'autres règles ProGuard spécifiques à chaque variante de construction, ajoutez une autre propriété proguardFiles dans le bloc productFlavor correspondant. Par exemple, le fichier Gradle suivant ajoute flavour2-rules.pro à l'arôme du produit flavour2. À présent, flavour2 utilise les trois règles ProGuard, car celles du bloc de publication sont également appliquées.

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                   'proguard-rules.pro'
        }
    }
    productFlavors {
        flavor1 {
        }
        flavor2 {
            proguardFile 'flavor2-rules.pro'
        }
    }
}