28 votes

Découvrez si la ressource est utilisée

Je cherche un moyen efficace de savoir si une ressource (principalement un dessinable) est utilisée en java ou dans un fichier XML.

Le problème est que sur mon projet actuel, les drawables sont souvent modifiés et maintenant j'ai des drawables, qui pourraient ne jamais être utilisés.

Existe-t-il un outil / moyen de trouver ces dessinables inutilisés sans rechercher chaque nom de fichier dans l'ensemble du projet?

31voto

WarrenFaith Points 28137

J'ai écrit un outil basé sur python pour résoudre ce problème. Comme ce n'est pas l'endroit pour le partager directement, j'ai créé une page de projet qui est maintenant hors ligne.

MISE À JOUR:
Le développement s'est arrêté car Lint peut faire de même et est déjà inclus dans le SDK Android.

17voto

Cristian Points 92147

J'ai juste écrit ce script bash juste pour le fun:

PROJECT="/path/to/the/project"
for file in $(ls $PROJECT/res/drawable -l | awk '{ print $8}' | sed 's/\..\+//g'); do count=0; for SRCFILE in `find $PROJECT -name "*.xml" -print 2> /dev/null`; do let "count+=$(grep -c @drawable/$file $SRCFILE)"; done; for SRCFILE in `find $PROJECT -name "*.java" -print 2> /dev/null`; do let "count+=$(grep -c R.drawable.$file $SRCFILE)"; done; if [ $count -lt 1 ]; then echo -e "\e[0;31m$file\e[0m not used"; else echo -e "\e[0;32m$file\e[0m used"; fi; done; 

Il fonctionne très bien, même si je suis un bash newbie de sorte qu'il peut être fortement améliorée:

alt text

Il recherche un drawable les ressources (@drawable/name sur les fichiers XML, et R.drawable.name sur les fichiers Java).

En passant, je ne savais pas qu' boxscore et calendarlogos n'étaient pas utilisés dans mon projet. Un autre drôle de fait est que la plupart des utilisateurs n'utilisent pas Linux, donc ce ne sera pas aussi aider beaucoup de gens.


Pour MacOs serait quelque chose comme ceci:

PROJECT="/path/to/the/project"
for file in $(ls -l $PROJECT/res/drawable | awk '{ print $9}' | sed 's/\..\+//g'); do count=0; for SRCFILE in `find $PROJECT -name "*.xml" -print 2> /dev/null`; do let "count+=$(grep -c @drawable/$file $SRCFILE)"; done; for SRCFILE in `find $PROJECT -name "*.java" -print 2> /dev/null`; do let "count+=$(grep -c R.drawable.$file $SRCFILE)"; done; if [ $count -lt 1 ]; then echo -e "$file not used"; else echo -e "$file used"; fi; done; 

10voto

Andrei Buneyeu Points 2812

Vérifiez ceci: http://code.google.com/p/android-unused-resources

MISE À JOUR 14.12.2011: Maintenant, vous pouvez trouver des ressources inutilisées et bien d'autres aussi simples que possible. Mettez à jour vers ADT 16 et utilisez Android Lint . C'est vraiment un outil incroyable. Il peut trouver toutes les ressources inutilisées (pas seulement les chaînes) et bien d'autres. Depuis son site officiel:

 Here are some examples of the types of errors that it looks for:

- Missing translations (and unused translations)
- Layout performance problems (all the issues the old layoutopt tool used to find, and more)
- Unused resources
- Inconsistent array sizes (when arrays are defined in multiple configurations)
- Accessibility and internationalization problems (hardcoded strings, missing contentDescription, etc)
- Icon problems (like missing densities, duplicate icons, wrong sizes, etc)
- Usability problems (like not specifying an input type on a text field)
- Manifest errors
and many more.
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X