1. 程式人生 > >快速清除安卓res下無用資源,精簡apk

快速清除安卓res下無用資源,精簡apk

由於我的操作方法是參考網上一篇原文研究的,尊重原創,首先貼出該地址:

http://www.cnblogs.com/angeldevil/p/3725358.html

但是遺憾的是這個文章雖然給出了方法,卻沒有給足夠詳細的操作步驟。

本人研究了一會走通了,把apk從12M降到了7M,下面寫下我的實際的操作步驟以及注意事項,補充完善下了哈:

1.首先,最重要的是先把自己專案備份一下免得出錯無法還原,後面還有用);

2.開啟cmd,進入你的SDK所在tools目錄(因為lint.bat檔案在這個目錄下)

例如我的SDK在G:\workfiles\eclipse_adt\sdk\tools,則執行如下命令進入目錄(可以直接複製路徑,在命令列內輸入“cd:”然後貼上)


3.利用lint.bat工具檢測沒有被引用的資源:在命令列上繼續執行如下命令(可直接複製,然後替換紅色字型部分為自己專案所在的路徑,即被檢測的專案)

lint --check "UnusedResources"   你的專案所在路徑 > result.txt

例如我的專案在G:\workfiles\android\android_projects\thinksns_xiniuhui_srb,則執行


可能會花一點時間,這個取決於你專案大小,執行完則會生成一個result.txt檔案在你sdk--tools目錄下;


這個檔案下記錄的就是你的程式碼中所有未引用的資源名稱;

4.通過指令碼清理你的專案:

在result.txt當前資料夾新建一個delete.java檔案(可以下載連結我寫好的,也可以自己新建delete.txt,複製以下程式碼,把紅色部分改成自己的專案路徑和SDK路徑,然後修改副檔名為.java,最後 命令列輸入 javac  delete.java  編譯,再java delete 執行就行了)

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
 * 類說明:
 * 
 * @author Administrator
 * @date 2015-5-21
 * @version 1.0
 */
public class delete{
public static void main(String[] args) {
try {
String projectPath = "G:/workfiles/android/android_projects/thinksns_xiniuhui_srb

";
BufferedReader reader = new BufferedReader(new FileReader(
"G:/workfiles/eclipse_adt/sdk/tools/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();
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}



5.最後需要注意的可能程式碼會刪除你values下的某些檔案,這時候會導致你的程式碼無法編譯,你只需要把之前備份的檔案複製到專案下就ok了,執行下看apk是否變小了呢