android资源优化工具类--ScanUnusedResouce

    前段时间需要创建一个新的项目,在已有的一个app项目上代码复制一份,将其中某些模块和资源文件进行修改,段时间内快速开发上线一个新的app的功能需求,我相信很多开发者都遇到过这种需求,当时将项目拷贝过来,相应模块删除修改后,还有很多无用资源文件,不知道哪些文件有没有被引用,人工排除比较费劲,想要通过Lint工具扫描工程资源,但是发现Lint不太好用(基于自身对Lint用的较少,而且如果工程里面存在反射,过滤结果会比较麻烦),于是上github查询了一番,发现了一个比较好用的资源工具类---ScanUnusedResouce。

    ScanUnusedResouce是一个基于Java程序的工具类,能够过滤掉通过反射调用的资源,可以在android studio中运行java程序的方式(as中运行java程序可参考此文)来检测项目中的无用资源,原理就是通过运行main()方法,把所有java和xml文件以字符串扫描到内存,然后拿到资源文件(xml,png,jpg等)名称做匹配查找,如果没有匹配到,该资源就是无用资源,可以直接删除。

    此工具类优缺点:

         优点:

                    1.便于操作,非常好用

                     2.可以过滤掉通过反射调用的资源

            缺点:

                1.不能解决资源拼接的问题

                 2.不能处理存在很多资源前缀相同的情况


在ScanUnusedResouce中,将ROOT_DIR的路径初始化为自己需要扫描项目的根路径,IMG_DIRS中的drawable分别改成对应的mipmap,并将getAllUnusedResExcept()方法中创建FileReader的file文件路径略微修改即可,此工具类中也定义了一个HOLD的字符数组,用于存在拼接查找资源的逻辑,根据自己的项目实际情况可进行修改操作。扫描结果如下:


android资源优化工具类--ScanUnusedResouce_第1张图片
扫描结果图

扫描出的这些资源文件和类都是无用资源,可以删除,而且类中有个字段控制是否自动删除操作的。




最后贴上工具类链接地址:ScanUnusedResouce   有问题多多讨论!

你可能感兴趣的:(android资源优化工具类--ScanUnusedResouce)