過濾Android工程中多餘的資源文件

在Android項目開發過程中經常會遇到這樣的情況:界面開發人員發佈了一個新版本的資源包,不過有的圖片名稱改了,有的圖片刪掉了,可是在實現的時候開發人員只是把新的資源覆蓋到原來的資源文件夾中,隨着版本的發佈,在drawable或values中積累的無用資源越來越多,直到最後發佈正式版的時候再想要刪除這些多餘的文件,於是不得不一個一個文件檢查看是否有用,再決定要不要刪除之。
那能不能將這個檢測過程自動化呢,對於無所不能的程序猿們來說這是必須地~
處理這一類問題大家首先想到的應該就是shell腳本,下面是一段使用shell腳本來自動檢測文件有沒有用到,並實現自動刪除沒有用到的文件的功能:

#!/bin/sh
  resfile=result.txt
  #drawdir=res/layout
  drawdir=res/drawable-hdpi
  tmpdrawfile="tmpdraw.txt"

  #clear tmp file
  echo "" > $tmpdrawfile
  echo "" > $resfile
  ls $drawdir > $tmpdrawfile
  #ls $tmpdrawfile
  cat $tmpdrawfile | while read line
  do
  filename=`echo $line | sed 's/..*//'`
  #echo $filename
  #start to search
  grepMode=@drawable/$filename"
  grepDir=./res
  #grepMode=R.layout.$filename
  #grepDir=./com
  result=`grep -r $grepMode $grepDir`
  if [ "$result" == "" ]
  then
    echo $line
    echo $line >> $resfile
    rm -f $drawdir/$line
  #else
   # echo "----------------"
  fi
  done
  rm -f $tmpdrawfile
上面的代碼很簡單,首先將drawable(或者你可以改成任意目錄)下的所有文件列出來,然後在整個目錄中遍歷,對每個文件檢測有沒有‘@drawable/$filename’這種格式的用法(你可以自己改成任意格式),如果沒有使用到的話,就將文件刪除。使用的時候需要將這個腳本放在跟res同級的目錄。
這段代碼也可以用在其他任何需要檢測出未使用/已使用文件的地方,只要將對應的目錄和匹配模式修改一下就可以了,或者如果爲了通用,可以將所有配置寫在一個配置文件,也可以將配置作爲參數傳遞進去。
原文地址: http://my.eoe.cn/cainiao1/archive/2353.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章