Cette réponse est résumée à partir de la Suppression des Ressources non utilisées qui explique comment utiliser minifyEnabled et shrinkResources, qui sont traitées plus en profondeur dans le document Officiel de la page.
C'est un problème commun pour les bibliothèques de tiers pour inclure des actifs que votre application codepath ne pas utiliser, et il est extrêmement important de supprimer ces actifs afin de produire de plus petits fichiers APK pour vos utilisateurs. Heureusement, la dernière version de Gradle et Android Studio offre une solution pour les aider.
Par la mise en minifyEnabled et shrinkResources à true dans votre Gradle configuration, le système va aller de l'avant en supprimant les ressources inutilisées de votre application.
android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
Il est important de noter que la suppression des ressources non utilisées exige la minifyEnabled drapeau à définir. Ce drapeau (tel que mentionné dans la Suppression de code inutilisé) va déclencher ProGuard pour supprimer les chemins de code qui ne sont pas utilisées par votre application. C'est une étape importante dans l'élimination de ressources de bibliothèques incluses. Si les chemins de code ne sont pas supprimés, alors le compilateur va encore croire que les ressources sont référencées par un codepath et de ne pas les enlever correctement.
Il est intéressant de noter que c'est une question assez vaste système. Par exemple, on va regarder à travers des constantes de chaîne spécifiques dans votre code, ainsi que diverses res/raw ressources à la recherche de toutes les Url dans le formulaire d' file:///….
pour les garder. Il ira même jusqu'à analyser le CSS, le HTML et les fichiers JavaScript ainsi.
Maintenant, il peut y avoir des cas ici de faux positifs ou de faux négatifs. Actifs pourraient être en train de couper, ou conservés, lorsque vous souhaitez que le comportement inverse. (Pour être juste, de ressources rétrécissement tend à tend...) Pour régler cela, vous pouvez ajouter les outils:garder et outils:jeter des attributs pour définir le comportement souhaité, par convention, dans un res/raw/keep.xml
le fichier.
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep= "@layout/l_used*_c, @layout/l_used_b*"
tools:discard="@layout/unused2"
/>