Selon la page Web "Documentation sur les ressources" d'Andriod ( here ), vous pouvez réduire la taille de l'application via le fichier build.gradle, à l'aide des lignes suivantes:
Android {
...
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
Et, ils disent que lors de son utilisation, cela vous indiquera également le montant économisé au cours du processus:
Lorsque vous activez shrinkResources, la génération de votre application doit afficher les résultats suivants:
... Ressources inutilisées supprimées: données de ressources binaires réduites de 2570 Ko à 1711 Ko: Suppression de 33%
Je n'arrive pas à trouver les réponses à ces questions:
Voyons voir
Lors de l'utilisation d'Android-Studio pour créer l'application signée, où puis-je trouver les informations sur la quantité enregistrée et les fichiers supprimés/modifiés?
Celles-ci seront dans le journal de bord. À l'intérieur Android studio, je crois, ils sont affichés dans la fenêtre Messages
(à côté d'Android, Exécuter, Fenêtres TODO).
Qu'est-ce que "shrinkResources" fait exactement avec "minifyEnabled"? Et pourquoi "shrinkResources" dépend-il de "minifyEnabled"?
minify
exécute ProGuard. shrink
supprime les ressources que ProGuard a marquées comme étant inutilisées.
Est-ce que l'une de ces options affecte la taille et/ou la qualité des fichiers image?
Non!
Proguard n'est-il pas responsable de la réduction du code source? Je demande ceci parce qu'il dit "vous devez activer minifyEnabled afin d'activer la réduction de code"
ProGuard réduit CODE UNIQUEMENT ; shrinkResources
c'est juste le contenu du dossier /res/
. shrinkResources
dépend de la sortie du journal de ProGuard à exécuter. ProGuard est celui qui analyse le code pour savoir ce qui n’est pas utilisé.
modifier:
Je viens de trouver un très beau billet de blog. CommonsWare l'a posté sur une autre question de stackOverlow: http://cyrilmottier.com/2014/08/26/putting-your-apks-on-diet/
cela explique parfaitement votre question suivante:
pourquoi l'un dépendrait de l'autre?
de la poste:
Proguard fonctionne du côté Java. Malheureusement, cela ne fonctionne pas du côté des ressources. Par conséquent, si une image mon_image dans res/drawable n’est pas utilisée, Proguard ne fait que supprimer sa référence dans la classe R mais conserve l'image associée en place.
cela signifie que shrinkResources
ne compare que si un dessin est dans le dossier mais pas dans la classe R
.
Les réponses aux questions 2 et 4 peuvent être trouvées dans cette vidéo de Android Dev Summit 2015 avec quelques autres informations utiles sur ce sujet.
Voici un aperçu des points discutés:
shrinkResources
est pris en compte que siminifyEnabled
est vrai
minifyEnabled
réduit le code, tandis queshrinkResources
réduit les ressources qui ne sont pas référencées à partir du codePar défaut,
shrinkResources
s'exécute en modesafe
. Si vous passez àstrict
, vous pouvez fournirtools:keep
ettools:discard
signale manuellement pour influer sur la réduction des ressources.