リソース (主にドローアブル) が Java または XML ファイルで使用されているかどうかを調べる効率的な方法を探しています。
問題は、私の現在のプロジェクトではドローアブルが頻繁に変更され、今では使用されない可能性のあるドローアブルがいくつかあることです。
プロジェクト全体で各ファイル名を検索せずに、未使用のドローアブルを見つけるツール/方法はありますか?
この問題を解決するために、python ベースのツールを作成しました。ここは直接共有する場所ではないので、現在オフラインになっているプロジェクト ページを作成しました。
更新:
Lint は同じことができ、すでに Android SDK に含まれているため、開発は中止されました。
私はちょうど楽しみのためにこのbashスクリプトを書きました:
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;
私はbashの初心者ですが、うまく機能しますので、大幅に改善することができます:
ドローアブル リソースのみ ( @drawable/name
XML ファイルおよびR.drawable.name
Java ファイル) を検索します。
ところで、私はそれを知らず、私のプロジェクトでは使用されていませんでしたboxscore
。calendarlogos
もう 1 つの面白い事実は、ほとんどのユーザーが Linux を使用していないことです。
MacO の場合は次のようになります。
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;
これを確認してください: http://code.google.com/p/android-unused-resources
UPDATE 14.12.2011:未使用のリソースやその他のリソースを可能な限りシンプルに見つけることができるようになりました。ADT 16 に更新し、Android Lintを使用します。本当に素晴らしいツールです。未使用のすべてのリソース (文字列だけでなく) などを見つけることができます。公式サイトから:
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.