어떻게 eclipse 를 사용 한 상황 에서 안 드 로 이 드 프로젝트 의 불필요 한 class 파일 과 자원 파일,그리고 불필요 한 그림 을 정리 합 니까?
10739 단어 android
first:
eclipse 에는 UCDetector 라 는 불필요 한 자바 파일 을 검사 하 는 플러그 인 이 있 습 니 다.
다운로드 주소:http://sourceforge.net/projects/ucdetector/files/latest/download?source=files
홈 페이지 주소:http://www.ucdetector.org/index.html
일부 사용 방법:다운로드 가 끝 난 후 다운로드 한 jar 파일 을\eclipse\dropins 폴 더 아래 에 두 고 eclipse 를 다시 시작 하면 이 플러그 인 을 설치 할 수 있 습 니 다.
다음은 다른 사이트 에서 복사 한 이 도구 가 사용 하 는 캡 처 입 니 다.
아 시 죠?남 의 그림 을 직접 붙 일 수 는 없 으 니 닦 으 세 요.링크 주 소 를 주세요.http://www.jb51.net/softjc/123402.html
물론 힌트 에 따라 불필요 한 자바 파일 을 삭제 할 수 있 습 니 다.이런 것 외 에 또 다른 방법 이 있다.
https://github.com/jasonross/Android-CU
다음은 readme.md 파일 의 프로필 입 니 다.
CU 는 clear unused 의 줄 임 말로,이 프로젝트 는 Android 프로젝트 에서 쓸모없는 코드 파일 과 자원 파일 을 정리 하 는 데 사 용 됩 니 다.
CURes.java
자원 파일 을 정리 하 는 데 사 용 됩 니 다.ADT SDK 가 자체 적 으로 가지 고 있 는 lint 도 구 를 이용 하여 상대 경 로 는\sdk\tools\lint.bat 입 니 다.CUSrc.java
.자바 파일 을 청소 하 는 데 사용 되 며,Eclipse 플러그 인UCDetector의 협조 가 필요 합 니 다.쓰다
쓸모없는 파일 을 삭제 하려 면 파일 을 삭제 할 수 없 을 때 까지 교체 실행
CURes.java
과CUSrc.java
이 필요 합 니 다.CURes.java 실행
D:adt/sdk/tools/lint.bat D:/nova
。 String[] dirArray
자원 파일 의 상대 디 렉 터 리 를 삭제 하기 위해 기본적으로 res 디 렉 터 리 아래 에 있 습 니 다.일반적으로values
삭제 할 필요 가 없 기 때문에 추가 하지 않 습 니 다.CUSrc.java 실행
D:/UCDetector/report.txt D:/nova
주의 하 다.
사실 프로젝트 에는 세 개의 자바 파일 이 있 습 니 다.하 나 는 CURes.java,하 나 는 CUSrc.java,그리고 ClearDrawble.java 파일 이 있 습 니 다.
자,자,먼저 남 이 어떻게 하 는 지 보 자.
CURes.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CURes {
public static final String separator = File.separator;
// res , lint.bat
public static void clearRes(String lintPath, String projectPath, String[] dirArray) {
Process process = null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
FileWriter fw = null;
// lint.bat
String cmd = lintPath + " --check UnusedResources " + projectPath;
int fileCount = 0, singleCount;
long fileSize = 0;
try {
// ,
SimpleDateFormat formatter = new SimpleDateFormat("CURes-yyyy-MM-dd-HH-mm-ss");
Date curDate = new Date(System.currentTimeMillis());
String dateStr = formatter.format(curDate);
fw = new FileWriter(dateStr + ".txt", true);
Runtime runtime = Runtime.getRuntime();
String line = null;
do {
singleCount = 0;
// lint
process = runtime.exec(cmd);
is = process.getInputStream();
isr = new InputStreamReader(is);
br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
boolean needDel = false;
for (String dir : dirArray) {
if (line.startsWith("res" + separator + dir)) {
needDel = true;
break;
}
}
if (needDel) {
int index = line.indexOf(":");
if (index > 0) {
String filePath = projectPath + separator + line.substring(0, index);
++fileCount;
++singleCount;
File file = new File(filePath);
fileSize += file.length(); //
boolean success = file.delete();
System.out.println(filePath + " " + success);
fw.write(filePath + " " + success + "
");
fw.flush();
}
}
}
} while (singleCount != 0);
String result = "delete file " + fileCount + ",save space " + fileSize / 1024 + "KB.";
System.out.println(result);
fw.write(result);
fw.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (process != null) {
process.destroy();
}
}
}
public static void main(String[] args) {
// ,
if (args.length < 2) {
System.out.println("Please config program arguments. Correct arguments contain both absolute path of lint.bat and that of android project.");
return;
}
// , ,lintPath lint.bat , ╲╲ /, ,projectPath android
// args[0] args[1] stirng
String lintPath = args[0];
String projectPath = args[1];
String[] dirArray = { "drawable", "layout", "anim", "color" };
CURes.clearRes(lintPath, projectPath, dirArray);
}
}
ok,그리고 쓸모없는 자바 파일 을 삭제 하 는 방법 을 봅 시다.
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
public class CUSrc {
// java ,
private static String clearUnusedJavaFile(String inFileName, String localProjectPath)
throws IOException {
File infile = new File(inFileName);
//
RandomAccessFile outfile = new RandomAccessFile("UnusedJava.txt", "rw");
int index = -1;
// src ,localProjectPath android
String path = localProjectPath + "/src/";
BufferedReader bf = new BufferedReader(new FileReader(infile));
String content = "";
StringBuilder sb = new StringBuilder();
while ((content = bf.readLine()) != null) {
index = content.indexOf(".<init>");
if (index != -1
&& (content.indexOf("\tClass") == (content.indexOf(")") + 1) || content.indexOf("\tInterface") == (content.indexOf(")") + 1))) {
String temp = path + content.substring(0, index).replace('.', '/') + ".java";
// ,
sb.append(temp).append("\t" + new File(temp).delete()).append(
"\t" + System.currentTimeMillis()).append("\r
");
}
}
outfile.seek(outfile.length());
outfile.writeBytes(sb.toString());
bf.close();
outfile.close();
return sb.toString();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
if (args.length == 2) {
String inputFile = args[0];
String localProjectPath = args[1];
try {
String str = clearUnusedJavaFile(inputFile, localProjectPath);
System.out.print(str);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.print("something wrong");
}
} else {
System.out.println("arguments wrong!!");
}
}
}
분석 이 끝 났 으 니 밥 먹 으 러 가자.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.