views:

59

answers:

2

I am looking for an efficient way to find out if a resource (mostly a drawable) is used in java or in an XML file.

The problem is, that on my current project the drawables are changed often and now I have some drawables, which might never be used.

Is there a tool/way to find those unused drawables without search each filename in the whole project?

+3  A: 

I just wrote this bash script just for 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;

It works fine, though I'm a bash newbie so it can be highly improved:

alt text

It searches drawables resources only (@drawable/name on the XML files, and R.drawable.name on the Java files).

By the way, I didn't know that boxscore and calendarlogos were not being used in my project. Another funny fact is that most users don't use Linux, so this won't help too many people.

Cristian
I updated my question with a link to a script I have written. This script might be also interesting for you. (I am always impressed on people writing bash scripts... +1 :)
WarrenFaith
OMFG!!! I just gave it a try and you did an awesome work! Really... thanks, it will be very helpful.
Cristian
+1  A: 

I wrote a tool based on python to solve this problem. As this is not the place to share it directly, I created a project page: http://code.google.com/p/androidresourcetracker/

Feedback, bug fixes, improvements are welcome!

WarrenFaith