zoukankan      html  css  js  c++  java
  • 过滤Android工程中多余的资源文件

    (欢迎访问:http://www.3body.tk/iblog/

    在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同级的目录。

    这段代码也可以用在其他任何需要检测出未使用/已使用文件的地方,只要将对应的目录和匹配模式修改一下就可以了,或者如果为了通用,可以将所有配置写在一个配置文件,也可以将配置作为参数传递进去。

  • 相关阅读:
    架构漫谈(七):不要空设架构师这个职位,给他实权
    架构漫谈(六):软件架构到底是要解决什么问题?
    架构漫谈(五):什么是软件
    架构漫谈(四):如何做好架构之架构切分
    架构漫谈(三):如何做好架构之识别问题
    [BZOJ 4361] isn(容斥/DP)
    [BZOJ 4767] 两双手(容斥/DP)
    [HNOI2011]卡农(容斥/DP)
    [洛谷] OSU!(期望DP)
    [洛谷] 纯粹容器(结论/期望)
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2993315.html
Copyright © 2011-2022 走看看