一键删除android下面无用资源

项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉这些垃圾,对于一个稍微大一点的工程来说,手工清理明显是不现实的,这就需要一个方法做这些事情。

本人最怕码字,上面内容引入

关于android lint的使用,如果不了解的请自行去了解。

下面是我的清除代码,主要就是使用dom 节点解析来删除无用资源,需要引入dom.jar ,建议到这个仓库去下载,,速度还可以。代码没有做优化,临时写的。

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;

import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;import org.xml.sax.SAXException;

public class CleanResources {

public static void clearResources(String projectPath, String resultPath)throws IOException {BufferedReader reader = new BufferedReader(new FileReader(resultPath));String line;int count = 0;while ((line = reader.readLine()) != null) {if (line.contains("UnusedResources") && !line.contains("appcompat")&& !line.contains("res\\values")) {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();}}}}

public static void doDocCheck(String projectPath, String resultPath)throws InterruptedException, IOException {String cmd = "cmd /c lint –check \&;UnusedResources\&; " + projectPath+ " >" + resultPath;Process process = Runtime.getRuntime().exec(cmd);System.out.println(cmd);String ls;BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));while ((ls = bufferedReader.readLine()) != null) {System.out.println(ls);}process.waitFor();}

public static void checkResource(String resultPath, String checkPath)throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(resultPath), "gbk"));String line;StringBuffer sbf = new StringBuffer();sbf.append("<?xml version=\&;1.0\&; encoding=\&;UTF-8\&;?>\n");sbf.append("<resources>\n");while ((line = reader.readLine()) != null) {if (line.contains("<color") || line.contains("<string")) {sbf.append(line);if (line.contains("<string-array")) {sbf.append("</string-array>");}sbf.append("\n");}}sbf.append("</resources>");// System.out.println(sbf.toString());writeFile(checkPath, sbf.toString());}

public static void writeFile(String fileAbsultPath, String content)throws IOException {OutputStream os = new FileOutputStream(fileAbsultPath);os.write(content.getBytes());os.close();}

public static void prepairClear(String clearPath, String checkPath)throws ParserConfigurationException, SAXException, IOException {File fileParent = new File(clearPath);File checkFile = new File(checkPath);

if (fileParent.isDirectory()) {for (File file : fileParent.listFiles()) {clear(file, checkFile);}} else {clear(fileParent, checkFile);}}

不义而富且贵,于我如浮云。

一键删除android下面无用资源

相关文章:

你感兴趣的文章:

标签云: