我正在尋找一種有效的方法來確定在Java或XML文件中是否使用資源(通常是可繪製的)。找出是否使用資源
問題是,在我目前的項目中,drawable常常被改變,現在我有一些drawable,它可能永遠不會被使用。
是否有一種工具/方法可以在整個項目中找到那些未使用的drawable而不搜索每個文件名?
我正在尋找一種有效的方法來確定在Java或XML文件中是否使用資源(通常是可繪製的)。找出是否使用資源
問題是,在我目前的項目中,drawable常常被改變,現在我有一些drawable,它可能永遠不會被使用。
是否有一種工具/方法可以在整個項目中找到那些未使用的drawable而不搜索每個文件名?
我寫了一個基於Python的解決這個問題的一個工具。由於這不是直接分享的地方,我創建了一個現在離線的項目頁面。
UPDATE:
由於皮棉開發已停止可以做同樣的,並已包含在Android SDK。
嗯是我還是工具不工作?我提供了一個路徑到我的android項目的根文件夾。但現在它說沒有文件/path/to/project/root/gen/R.java。這是正確的,因爲R.java文件在gen/de/somepackage/anotherpackage/clientpackage /是否有解決方案? – Janusz 2010-11-11 11:50:30
我想最好在項目頁面創建一張票。我很活躍,所以我會盡快回復:) – WarrenFaith 2010-11-11 13:19:19
無法正常工作,必須在「parseR(rclass)」硬編碼我的目錄,它在C:\ Workspace \ Project_dir \ gen \ CVS \中尋找R.java,並且我給了dir選項'-i C:\ Workspace \ Project_dir'。所以它需要更多的工作,但我至少有工作。 – JPM 2011-04-07 10:51:43
我剛纔寫的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新手,所以它可大大地改善:
它搜索僅繪製資源(在XML文件上爲@drawable/name
,在Java文件上爲R.drawable.name
)。
順便說一下,我不知道boxscore
和calendarlogos
沒有在我的項目中使用。另一個有趣的事實是,大多數用戶不使用Linux,所以這不會幫助太多的人。
對於Mac會是這樣的:
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;
我更新了我的問題,並鏈接到了我寫的腳本。這個腳本可能對你也很有趣。 (我總是對寫bash腳本的人印象深刻...... +1 :) – WarrenFaith 2010-09-24 11:21:11
OMFG !!!我只是試了一下,你做了一件很棒的工作!真的......謝謝,這將會非常有幫助。 – Cristian 2010-09-24 13:07:53
輝煌。爲我工作很好。我不得不將8改爲9來指定文件名。由於所涉及的應用程序使用額外的文件夾進行像素密度和方向,因此我還稍微更改了可繪製文件夾路徑。 – bhekman 2012-07-10 21:18:18
檢查: http://code.google.com/p/android-unused-resources
更新2011年12月14日:現在你可以找到未使用的資源多以儘可能簡單。更新至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.
這將是不錯的那種:)腳本的 – Macarse 2010-09-21 12:21:34
好看起來像我必須寫一個:) – WarrenFaith 2010-09-21 12:33:44
@MaxUsanin感謝濫發我的問題。你的問題與我的問題有什麼關係?這是垃圾郵件,我標記了它。 – WarrenFaith 2012-12-06 15:19:35