概述

随着android项目的开发,项目的体积肯定是会越来越大,结构变得复杂。尤其是模块化、重构后,会产生许多代码和资源的重复冗余。这对于程序员来说简直就是噩梦。因为在开发中,绝大多数时间都是浪费在编译调试上,对于企业级的项目来说,尤为明显。因此优化代码目录结构,减少冗余代码和资源,对项目都是很有帮助的。今天,我就通过Android Studio自带的Code Analyze,介绍一下如何删除无用资源。

介绍

删除无用资源,主要有两种方法。

  1. 一个就是double shift后,输入”unused”,可以找到remove unused resources进行删除。
  1. 第二个就是点击菜单栏上的Analyze->Inspect Code…对项目进行扫描。

可以指定检查的范围

等待一段时间后,控制台的位置就会弹出一个检查的结果。其实AS的代码分析不仅仅是删除无用资源这么一个功能,它其实就是一个lint检查工具,可以帮助开发者优化许多代码问题,这里就先暂不一一讲解了,后面会再写一篇关于lint分析及如何解决的文章。我们这里要看的是performance下面的unused resources,lint工具会提示哪些资源是没有被用到的,并且在右边可以直接进行删除操作。被扫描出来的资源类型有图片、string、drawable、layout、id、style等等。

遇到的坑

由于我是用家里的demo做的截图,真正的项目开发,结构会复杂的多,到时候lint弹的提示也会多种多样,unused的资源也会多很多。在公司项目的优化中,由于模块化的结构,使得资源被层层依赖,所以第一种方法,可以在正常的情况下使用,而第二种,需要删除所有的build文件,这样才能删得比较彻底。而第一种方法,如果删除了build文件夹的话,会有很多被依赖的资源也被扫出来,影响到正常的编译。

这里还要说明的一点是,在删除资源后,提交的时候一定要反复check,有些资源是通过库的反射进行调用的(push图标),或者是潜规则,需要将他们还原回来。

shrinkResources

这里发展一下知识点,在gradle的buildTypes中有个shrinkResources属性,当将其设置为true的时候,可以在打包apk的时候,自动删除没有被引用到的资源,并且可以在build中找到resources.txt,在最后会列出了被优化的资源文件。这里有一点要提的是,并不是所有不被引用到的文件都会被过滤掉,很多被依赖到build后,还是能被打进apk。

总结

总得来说,remove unused resources还是很重要的,无论是对编译还是apk的体积,都很有帮助。下一篇,我将讲解一下如何删除无用的java文件。