标签:android style blog io color ar 使用 java sp
要清理没用的资源,首要的工作当然是找到他们,我们知道Anroid SDK中有一个工具叫lint,可以帮助我们查看工程中存在的问题,其中有一项功能就是查找没用到的资源,这样这一步就简单了,直接对需要清理的工程执行以下命令:
lint --check "UnusedResources" [project_path] > result.txt
或
第一步:
使用android-sdk-windows\tools\lint.bat工具
先将检测结果导出到文本文件
代码:lint 工程目录 >d:/Temp/res.txt
将指定工程目录下的工程检测结果导出到res.txt中
执行完以上命令后工程中关于UnusedResources的问题就都保存到result.txt了,先来看一下result.txt的内容
res/values/arrays.xml:202: Warning: The resource R.array.msg_my_friend_category_items appears to be unused [UnusedResources]
^M
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
res/layout/back_up_level_list.xml: Warning: The resource R.layout.back_up_level_list appears to be unused [UnusedResources]
res/layout/backup_list.xml: Warning: The resource R.layout.backup_list appears to be unused [UnusedResources]
res/layout/backup_listview_item.xml: Warning: The resource R.layout.backup_listview_item appears to be unused [UnusedResources]
java代码
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Main { public static void main(String[] args) { /* if(args.length<3) { System.out.printf("delunuse [?????¼] [?????????]\r\n"); return; } delUnused(args[1],args[2]); */ delUnused("D:/androids/iTalk/","D:/androids/iTalk/italk_unused.txt"); } /* (non-Java-doc) * @see java.lang.Object#Object() */ public Main() { super(); } public static void delUnused(String projectPath,String projectLogFile) { try { BufferedReader reader = new BufferedReader(new FileReader(projectLogFile)); String line; int count = 0; while((line = reader.readLine()) != null) { if (line.contains("UnusedResources") && !line.contains("res\\value") && !line.contains("appcompat")) { count++; int end = line.indexOf(":"); if (end != -1) { String file = line.substring(0, end); //if(!file.equals("color.xml") && !file.equals(color.xml) && !file.equals(color.xml)) { String f = projectPath +file; System.out.println("del "+f); new File(f).delete(); } } } } } catch (Exception e) { e.printStackTrace(); System.out.printf(e.getMessage()); } } }
或
String projectPath = "***"; BufferedReader reader = new BufferedReader(new FileReader("/home/angeldevil/result.txt")); String line; int count = 0; while((line = reader.readLine()) != null) { if (line.contains("UnusedResources") && !line.contains("res/value") && !line.contains("appcompat")) { count++; int end = line.indexOf(":"); if (end != -1){ String file = line.substring(0, end); String f = projectPath +file; System.out.println(f); new File(f).delete(); } } }
程序非常简单,就几行代码,就是读取result.txt文件的每一行,根据自己需要的条件过滤掉不需要处理的行(比如我只想清理anim、drawable及layout,所以过滤掉res/value目录下的信息,并且忽略appcompat相关的信息),每一行":"前的字符串就是文件名,找到了文件名就好处理了,直接删除,或者打印出来,或者写到一个文件里以再次确认是否确认要删除,当把结果写到一个文件后我们就可以查看这个文件是否有现在没用到但仍不想删除的文件,如果有,处理方法也很简单,去掉这一行或简单地做个标记,如前面打#,然后再读取这个文件把没做标记的行对应的文件删除就行了。
看起来很简单,但是有几点需要注意:
清理资源就两个步骤:
通过UCDetector和lint基本上就可以检测到项目中UnusedResource相关的问题了,一般像方法可见性,某个方法没用到这种问题,不处理也罢,改到相应的文件时手工处理算了,主要处理的就是某些文件或类没被用到,有检测报告,分析下报告就行了。这种报告一般是每行报告一个问题并且每行的文字是有规律的(工具生成的肯定有规律),按规律过滤出我们需要的信息就行了
标签:android style blog io color ar 使用 java sp
原文地址:http://www.cnblogs.com/longhs/p/4056962.html