• Android lint 删除无用图片文件和配置文件


    Android lint  删除无用、冗余的  配置文件和 图片资源   

    转载请注明  http://blog.csdn.net/aaawqqq?viewmode=contents

    Android项目经过长期的迭代开发  项目当中有大量无用的java类和冗余图片

    如果不整理将会导致 apk 包比较大  

    审查 清理Java类  使用UCDetector  可以查看我的上篇 博文

    http://blog.csdn.net/aaawqqq/article/details/46684441

    Android lint 是Android SDK 提供的代码检查工具  主要检查 配置文件 资源文件  发现代码问题

    我的使用场景  :

    减少Android apk 包大小  

    使用Android lint 发现无用图片和xml 文件  通过删除冗余资源   

    我在此给大家分享的是工具与技术  

    具体的知识 大家通过 其它博文去学习  可以查看文章结尾的参考链接  我在这就不复述了   

    1) 工具

    1.1) Android lint  在  Android sdk tools  当中   如果可以希望大家能配好环境变量

    本文主讲 以命令行形式的删除无效资源的批处理

    1.2) 另在eclipse当中有lint插件   

    此方法

    优点:运行简单  在eclipse的 直接显示 

    缺点:需要手动删除  当冗余文件数量多的适合 会很伤脑筋

    2) 输入

     打开命令行  使用lint命令  

     如图:

     
    [java] view plaincopy
     
    1. lint --check "UnusedResources" /Users/baozi/Dev/android/android > result.txt  

      /Users/baozi/Dev/android/android  > result.txt   

      

      /Users/baozi/Dev/android/android  是 工程的路径  (工程名为  android )

      

      生成的扫描结果将会存放在当前目录下的  result.txt  当中

      如我的目录      /Users/baozi/result.txt

    3) 输出文件result.txt

    打开文件目录   /Users/baozi/result.txt     

    4) 根据结果 批量删除对应的文件

    本文重点   当你第一次运行时 发现需要数千资源文件需要删除的时候就会伤脑筋

    手工逐条删除 并不符合程序猿三大优秀品质    :      懒惰   没有耐心   骄傲

    尝试过使用 vim 删除  发现操作起来也相当麻烦  

    大家可以参考下面的代码   使用FIle 获取 result.txt 中的文件信息   调用 File .delete();  方法删除   

    [java] view plaincopy
     
    1. /** 
    2.  * 删除 未使用的冗余资源(图片 xml布局) 
    3.  *  
    4.  * @param b 
    5.  *  
    6.  *            false 显示资源列表 
    7.  *  
    8.  *            true 显示资源列表 并删除资源 
    9.  *  
    10.  * @throws Exception 
    11.  */  
    12. private static void init(boolean b) throws Exception {  
    13.   
    14.     String encoding = "UTF-8"; // 字符格式  
    15.     String projectPath = "/Users/baozi/Dev/shihui/android/";//Android工程所在地址  
    16.     String filePath1 = "/Users/baozi";//result的所在路径  
    17.     File file = new File(filePath1, "result.txt");//获取result.txt 文件 生成地址  
    18.     if (file.isFile() && file.exists()) { // 判断文件是否存在  
    19.         InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式  
    20.         BufferedReader bufferedReader = new BufferedReader(read);  
    21.         String line = null;  
    22.         while ((line = bufferedReader.readLine()) != null) {  
    23.             if (line.contains("UnusedResources") && !line.contains("res/value") && !line.contains("appcompat")  
    24.                     && !line.contains("res/xml")) {  
    25.                 // System.out.println(line);  
    26.                 int end = line.indexOf(":");  
    27.                 if (end != -1) {  
    28.                     String file_end = line.substring(0, end);  
    29.                     String f = projectPath + file_end;  
    30.                     System.out.println(f);  
    31.                     if (b) {  
    32.                         new File(f).delete();  
    33.                         System.out.println("删除成功");  
    34.                     }  
    35.                 }  
    36.   
    37.             }  
    38.   
    39.         }  
    40.         read.close();  
    41.   
    42.     }  
    43. }  


    projectPath  :   Android工程在硬盘中的位置   

    filePath1  :  lint 运行结果   result.txt  所在的位置

    方法  参数  传入false  仅打印结果   传入true 打印结果 并删除文件

    填入正确的地址  就能批量执行删除未使用的 布局 &  图片 资源   (UnusedResources)  

    如果想要删除其它操作  请修改 筛选条件  

    if (line.contains("UnusedResources") && !line.contains("res/value") && !line.contains("appcompat")

    && !line.contains("res/xml")


    使用心得:  循环使用3-6次 能完成 删除全部未使用的资源  但是有些废弃的模块 存在代码以来关系 需要手工判断删除

    附1:

    使用eclipse自带的 Android lint 插件 审查代码的方式

    使用方式:  

    右击工程 → Android Tools → Run Lint: Check for Common Error  

    结果会在 Lint Warrings 当中显示  和 看logcat 的方式相同


    运行结果:

     附2:  参考博文

    http://blog.csdn.net/hudashi/article/details/8333349

    //Android Lint 检查规则列表
     //介绍比较清晰
  • 相关阅读:
    laravel tinker的使用
    清空表中数据
    不要为过多思考浪费你的精力
    #tomcat#启动过程分析(上)
    #hashMap冲突原理#详细
    #数组集合知识#HashMap的实现原理
    #数据库#连接数据库的几个步骤
    #数据库#JDBC基础知识
    #数据库#查询语句 1=1的使用条件
    #tomcat#虚拟主机配置及访问(三)
  • 原文地址:https://www.cnblogs.com/xgjblog/p/4895206.html
Copyright © 2020-2023  润新知