package com.basic.security.utils;
|
|
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.IOUtils;
|
|
import java.io.File;
|
import java.io.FileReader;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.TreeMap;
|
|
public class RUtilsMain {
|
public static Map<String, String> idMap = new TreeMap<>(Collections.reverseOrder());
|
static File RUtilsFile = new File("E:\\workspace\\Security_yuyin_landscape_dual\\app\\src\\main\\java\\com\\basic\\security\\utils\\RUtils.java");
|
static String RUtilsFileContent = "package com.basic.security.utils;\n" +
|
"public class RUtils {\n";
|
|
public static void main(String[] args) {
|
listFile(new File("E:\\workspace\\Security_yuyin_landscape_dual\\app\\src\\main\\java\\com\\basic"), "find");
|
listFile(new File("E:\\workspace\\Security_yuyin_landscape_dual\\app\\src\\main\\java\\com\\basic"), "replace");
|
RUtilsFileContent += "}";
|
// System1.out.println(RUtilsFileContent);
|
try {
|
FileUtils.write(RUtilsFile, RUtilsFileContent);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
private static void listFile(File file, String type) {
|
if (file.isDirectory()) {
|
File[] subFiles = file.listFiles();
|
for (File subFile : subFiles) {
|
listFile(subFile, type);
|
}
|
}
|
if (file.isFile()) {
|
String fileName = file.getName();
|
if (fileName.endsWith(".java") && !"RUtils.java".equals(fileName) && !"RUtilsMain.java".equals(fileName)
|
&& !"ResolutionAdaptation.java".equals(fileName)
|
&& !"ResolutionUtil.java".equals(fileName)
|
&& !"LayoutUtil.java".equals(fileName)
|
) {
|
try {
|
List<String> lines = IOUtils.readLines(new FileReader(file));
|
for (int i = 0; i < lines.size(); i++) {
|
String line = lines.get(i);
|
if ("find".equals(type)) {
|
generateMethods(line, new String[]{
|
"R.dimen.",
|
"R.layout.",
|
"R.drawable.",
|
"R.color.",
|
"R.raw.",
|
"R.style.",
|
"R.styleable.",
|
"R.attr.",
|
"R.id."
|
});
|
}
|
if ("replace".equals(type)) {
|
for (Map.Entry<String, String> entry : idMap.entrySet()) {
|
if (line.contains(entry.getKey())) {
|
line = line.replace(entry.getKey(), entry.getValue());
|
}
|
}
|
}
|
lines.set(i, line);
|
}
|
FileUtils.writeLines(file, lines);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
public static void generateMethods(String line, String[] resourcePrefixs) {
|
for (String resourcePrefix : resourcePrefixs) {
|
List<String> ids = new ArrayList<>();
|
if (!line.contains(resourcePrefix)) {
|
continue;
|
}
|
if (line.contains("R.color.transparent")) {
|
System1.out.println("RUtilsMain.generateMethods");
|
}
|
String id = line.substring(line.indexOf(resourcePrefix));
|
id = id.replace(");", "").trim();
|
id = id.replace("}", "");
|
id = id.replace(")", "");
|
id = id.replace("(", "");
|
id = id.replace(";", "");
|
id = id.replace(":", "");
|
if (id.contains(",")) {
|
String[] idsArray = id.split(",");
|
for (String id1 : idsArray) {
|
id1 = id1.trim();
|
if (id1.length() > 0 && id1.startsWith(resourcePrefix)) {
|
ids.add(id1);
|
}
|
}
|
} else {
|
ids.add(id);
|
}
|
for (String id2 : ids) {
|
if (line.contains("android." + id2)) {
|
continue;
|
}
|
if (idMap.containsKey(id2)) {
|
continue;
|
} else {
|
String call = "com.basic.security.utils.RUtils." + id2.replace(".", "_") + "";
|
System1.out.println("RUtilsMain.generateMethods " + call);
|
idMap.put(id2, call);
|
}
|
if (id2.startsWith("R.styleable.") && line.contains("obtainStyledAttributes")) {
|
String method = "public static final int[] " + id2.replace(".", "_") + "= com.basic.security.yuyin.indoor." + id2 + "; \n ";
|
RUtilsFileContent += method + "\r\n";
|
} else {
|
String method = "public static final int " + id2.replace(".", "_") + "= com.basic.security.yuyin.indoor." + id2 + "; \n ";
|
RUtilsFileContent += method + "\r\n";
|
}
|
// System1.out.println("" + id + " " + method);
|
}
|
}
|
}
|
}
|