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

在Android项目开发过程中经常会遇到这样的情况:界面开发人员发布了一个新版本的资源包,不过有的图片名称改了,有的图片删掉了,可是在实现的时候开发人员只是把新的资源覆盖到原来的资源文件夹中,随着版本的发布,在drawable或values中积累的无用资源越来越多,直到最后发布正式版的时候再想要删除这些多余的文件,于是不得不一个一个文件检查看是否有用,再决定要不要删除之。

那能不能将这个检测过程自动化呢,对于无所不能的程序猿们来说这是必须地~

处理这一类问题大家首先想到的应该就是shell脚本,下面是一段使用shell脚本来自动检测文件有没有用到,并实现自动删除没有用到的文件的功能:

  #!/bin/shresfile=result.txt#drawdir=res/layoutdrawdir=res/drawable-hdpitmpdrawfile="tmpdraw.txt"#clear tmp fileecho "" > $tmpdrawfileecho "" > $resfilels $drawdir > $tmpdrawfile#ls $tmpdrawfilecat $tmpdrawfile | while read linedofilename=`echo $line | sed 's/..*//'`#echo $filename#start to searchgrepMode=@drawable/$filename"grepDir=./res#grepMode=R.layout.$filename#grepDir=./comresult=`grep -r $grepMode $grepDir`if [ "$result" == "" ]thenecho $lineecho $line >> $resfilerm -f $drawdir/$line#else# echo "----------------"fidonerm -f $tmpdrawfile

上面的代码很简单,首先将drawable(或者你可以改成任意目录)下的所有文件列出来,然后在整个目录中遍历,对每个文件检测有没有‘@drawable/$filename’这种格式的用法(你可以自己改成任意格式),如果没有使用到的话,就将文件删除。使用的时候需要将这个脚本放在跟res同级的目录。

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

过滤Android工程中多余的资源文件相关推荐

  1. 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片...

    在我们迭代项目的过程中,经常会启用某些功能,或者修改某些界面的问题,那么问题来了,这样很容易出现大量的冗余.java文件,冗余资源文件,一些冗余的界面文件等.那么问题既然出现了,那么如何去解决呢,这就 ...

  2. android工程中的软件,通过Android Studio创建Android应用程序(附带解析)

    这一节我们主要来创建一个简单的 Android 的应用程序. 创建 HelloWorld 工程 启动 Android Studio,依次选择 File --> New --> New Pr ...

  3. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  4. 在Android工程中,添加ICON资源

    在Android工程中,每添加一个资源,就会在gen目录下的R.java中自动生成一个新的静态整型变量来指向这个资源.程序文件中调用资源的时候,先在R.java中找到变量名,然后根据变量值查找资源. ...

  5. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  6. Android工程中添加图片资源

    转载自:http://www.baiyuxiong.com/?p=69 在Android工程中,每添加一个资源,就会在gen目录下的R.java中自动生成一个新的静态整型变量来指向这个资源.程序文件中 ...

  7. android开发 apk文件,android开发中,将数据库文件与APK一起发布?

    2015-11-11 回答 可以将xx.db文件复制到eclipse android工程中的res\raw目录中.所有在res\raw目录中的文件不会被压缩,这样可以直接提取该目录中的文件. 使用op ...

  8. android studio中把c/c++文件编译成.so库(一)

    2019独角兽企业重金招聘Python工程师标准>>> 最近的项目涉及到JNI编程,经过一段时间的JNI编程之后,终于完美弄完了.所以,把在android studio中编译c/c+ ...

  9. android 友盟统计功能,在Android工程中集成友盟统计

    在Android工程中集成友盟统计 首先需要在友盟官网注册账号并添加新应用,获取Appkey.具体步骤这里不进行叙述. 1.集成准备 首先需要集成友盟统计SDK 有两种方式: 1.下载SDK,并复制到 ...

最新文章

  1. yolov3 get_next_batch 异常
  2. godep的save和update
  3. Windows 技术篇 - windows日期和时间设置里没有Internet 时间页签原因和解决方法
  4. Centos7中Memcached安装使用说明
  5. sparkStreaming连接kafka整合hbase和redis
  6. socket-(2)
  7. 学业水平考试b能上985吗_这是最好考的985高校,如今被“降级”到双一流B类,真让人惋惜...
  8. HCDA学习笔记(二)
  9. java 日历选择天_如何从Java中的日历对象构建天,月,年的列表?
  10. SEM测试样品减薄及表面复型
  11. raster包—aggregate函数
  12. 关于 Photoshop 的在线使用
  13. 什么是APS高级计划排程(高级计划排产)可视化甘特图,有哪些应用效果?
  14. Java泛型比较大小
  15. java安装报错循环冗余检查_SQLSERVER2012备份日志报错:”读取失败: 23(数据错误(循环冗余检查)。)”...
  16. c语言字母数字有多少种组合,C语言------排列组合 组合情况(重复和不重复)
  17. node.js+uni计算机毕设项目计算机配件价格查询微信小程序(程序+小程序+LW)
  18. 【java初学】List集合
  19. AD原理图库元件标识等字符上方的横线
  20. Transformers 多语言模型 | 十一

热门文章

  1. mwget安装及使用
  2. 图文详解什么是OAuth2
  3. Oracle中两个重要的语句
  4. 从SAP客户主数据里直接创建商机(Opportunity) 1
  5. 《Effective Objective-C 2.0》 阅读笔记 2
  6. python爬虫从入门到放弃(九)之 实例爬取上海高级人民法院网开庭公告数据
  7. 常用的第三方库(OC)
  8. 【Android framework】AndroidManagerService初始化流程
  9. Linux下SCP使用技巧
  10. android版 eclipse