今天写程序时发现apk文件upload到模拟器很慢,检查一下发现有很多未使用的资源文件。
使用adt插件上的lint做的检查,但是条目实在太多。
作为一个程序员,这种批量删除的活肯定不会愿意去干噻。
网上搜索了一下,有这方面的工具,但是根本不靠谱啊
没法,只有手动处理一下喽
第一步:
使用android-sdk-windows\tools\lint.bat工具
先将检测结果导出到文本文件
代码:lint 工程目录 >d:/Temp/res.txt
将指定工程目录下的工程检测结果导出到res.txt中
第二步:
自己写代码来处理吧
你仔细看res.txt可以发现未使用资源格式的规律
下面是部分结果:
res\layout\activity_main.xml: Warning: The resource R.layout.activity_main appears to be unused [UnusedResources]
res\drawable\adapter_bg.xml: Warning: The resource R.drawable.adapter_bg appears to be unused [UnusedResources]
res\drawable\adapter_bg3.xml: Warning: The resource R.drawable.adapter_bg3 appears to be unused [UnusedResources]
我是这样子写的删除处理:
String projectPath = "xxx";
FileRowHander hander = new FileRowHander("d:/Temp/res.xml");
hander.handerRow(new IFileRowHander() {
// 文件读取会逐行调用一次该方法
public void hander(String fileRow) throws IOException {
// 包含"UnusedResources"的都是未使用资源
if (fileRow.contains("UnusedResources")) {
// 我们只需要第一个冒号之前的那个路径,相对与项目目录的路径
int end = fileRow.indexOf(':');
if (end > 0) {
String subPath = fileRow.substring(0, end);
System.out.println("del -- " + subPath);
String delFile = projectPath + "/" +subPath ;
MyFileUtils.delFile(delFile);
}
}
}
});
这就是对文件逐行处理,有些操作我封装了一下,大家就当伪代码看吧
如果有更好的方法,欢迎分享哦