Find out if resource is used

后端 未结 3 1894
无人及你
无人及你 2020-12-13 02:50

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 dra

3条回答
  •  时光取名叫无心
    2020-12-13 03:17

    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.


    For MacOs would be something like this:

    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; 
    

提交回复
热议问题