使用lint清理項(xiàng)目多余文件

lint簡(jiǎn)介

Android Studio 提供一個(gè)名為 Lint 的代碼掃描工具解取,可幫助發(fā)現(xiàn)并糾正代碼結(jié)構(gòu)質(zhì)量的問(wèn)題步责,而無(wú)需實(shí)際執(zhí)行該應(yīng)用,也不必編寫(xiě)測(cè)試用例禀苦。該工具會(huì)報(bào)告其檢測(cè)到的每個(gè)問(wèn)題并提供該問(wèn)題的描述消息和嚴(yán)重級(jí)別蔓肯,以便您可以快速確定需要優(yōu)先進(jìn)行哪些關(guān)鍵改進(jìn)。此外振乏,您可以調(diào)低問(wèn)題的嚴(yán)重級(jí)別蔗包,忽略與項(xiàng)目無(wú)關(guān)的問(wèn)題,也可以調(diào)高嚴(yán)重級(jí)別慧邮,以突出特定問(wèn)題调限。

手動(dòng)清除

步驟

在Android studio的頂部菜單欄上選擇analyze-> Run inspection by name,在彈出框輸入unusedresourse進(jìn)入多余資源檢查误澳,可以自定義檢查范圍耻矮。檢查完畢后在菜單欄中選擇Refactor->removeUnusedResourses.具體參考 Android develeoper

這里寫(xiě)圖片描述

相關(guān)問(wèn)題

用此方法檢查出現(xiàn)眾多問(wèn)題:

  1. 檢查整個(gè)項(xiàng)目出的結(jié)果明顯shan有錯(cuò):
    這么大一個(gè)項(xiàng)目只檢查出來(lái)兩個(gè)多余的字符串資源忆谓,這明顯是不符合常理的裆装,點(diǎn)開(kāi)任一模塊可以很容易發(fā)現(xiàn)未被引用的圖片資源。而逐模塊則檢查出很多陪毡。
  2. 逐模塊檢查也有問(wèn)題:
    首先米母,單一模塊檢查無(wú)用資源出的結(jié)果僅僅是在該模塊內(nèi)沒(méi)有被引用的,如果把搜索范圍放到整個(gè)項(xiàng)目中仍然可能存在引用毡琉,這種情況下刪除是不可取的。
  3. lint刪除文件方式的不清楚:
    當(dāng)逐模塊檢查出未被引用的資源文件后妙色,使用上文提到的removeUnusedResourses刪除的并不僅僅是此模塊下的資源桅滋,而是整個(gè)項(xiàng)目,這種情況下無(wú)法控制刪除的進(jìn)度。
  4. lint未把文件刪干凈:
    當(dāng)刪除后編譯整個(gè)項(xiàng)目會(huì)報(bào)某些資源文件未找到的錯(cuò)誤丐谋,跟蹤這些錯(cuò)誤布局文件發(fā)現(xiàn)這些文件本身也未被引用芍碧。查閱網(wǎng)上資料說(shuō)需要多次調(diào)用lint才能清楚干凈,但是我嘗試后顯示已經(jīng)沒(méi)有unusedResouses号俐。

說(shuō)明

綜上所述泌豆,這種方式在我看來(lái)并不能達(dá)到清除項(xiàng)目多余資源文件的目的,尤其在項(xiàng)目非常龐大的情況下吏饿。

使用lint命令行刪除

步驟

打開(kāi)終端踪危,輸入

lint --check "UnusedResources" project_path > result.txt  

前提是電腦已經(jīng)配置好lint的環(huán)境變量。生成的掃描結(jié)果將會(huì)存放在當(dāng)前目錄下的 result.txt 當(dāng)中猪落。
隨后可以根據(jù)結(jié)果贞远,批量刪除對(duì)應(yīng)的文件。
這是result.txt文件:


這里寫(xiě)圖片描述

因?yàn)閞esult是按照格式排列的笨忌,這時(shí)候需要編寫(xiě)一段java代碼執(zhí)行刪除任務(wù):

/** 
 * 刪除 未使用的冗余資源(圖片 xml布局) 
 *  
 * @param b 
 *  
 *            false 顯示資源列表 
 *  
 *            true 顯示資源列表 并刪除資源 
 *  
 * @throws Exception 
 */  
private static void init(boolean b) throws Exception {  
  
    String encoding = "UTF-8"; // 字符格式  
    String projectPath = "/Users/baozi/Dev/shihui/android/";//Android工程所在地址  
    String filePath1 = "/Users/baozi";//result的所在路徑  
    File file = new File(filePath1, "result.txt");//獲取result.txt 文件 生成地址  
    if (file.isFile() && file.exists()) { // 判斷文件是否存在  
        InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考慮到編碼格式  
        BufferedReader bufferedReader = new BufferedReader(read);  
        String line = null;  
        while ((line = bufferedReader.readLine()) != null) {  
            if (line.contains("UnusedResources") && !line.contains("res/value") && !line.contains("appcompat")  
                    && !line.contains("res/xml")) {  
                // System.out.println(line);  
                int end = line.indexOf(":");  
                if (end != -1) {  
                    String file_end = line.substring(0, end);  
                    String f = projectPath + file_end;  
                    System.out.println(f);  
                    if (b) {  
                        new File(f).delete();  
                        System.out.println("刪除成功");  
                    }  
                }  
  
            }  
  
        }  
        read.close();  
  
    }  
}  

然后在Android studio里面跑一下蓝仲,方式參考這篇博客
理論上循環(huán)多次可以達(dá)到刪除多余文件的效果官疲。

結(jié)果

原來(lái)的安裝包為48.2mb袱结,采用這種方法為43.3mb,縮小了一點(diǎn)途凫,but....在控制臺(tái)啟動(dòng)時(shí)候報(bào)了728個(gè)錯(cuò)誤垢夹。。颖榜。并不清楚這會(huì)對(duì)整個(gè)項(xiàng)目的運(yùn)行產(chǎn)生什么影響棚饵。

結(jié)論

嘗試了不止以上兩種方法,想結(jié)合lint手動(dòng)刪除一部分但是因?yàn)橘Y源太多而且導(dǎo)致應(yīng)用完全跑不了而作罷掩完,也想查看其他人整理的工具但是發(fā)現(xiàn)只能運(yùn)行在eclipse上费薄。胳泉。。總而言之明刷,apk包是小了一點(diǎn),但是不知道會(huì)不會(huì)有什么副作用淌山,龐大項(xiàng)目的無(wú)用資源刪除并不像想象中那么簡(jiǎn)單幕随。

Android Studio發(fā)布Rease版本apk錯(cuò)誤 :app:packageRelease FAILED

java.io.IOException: Please correct the above warnings first.

如何解決這個(gè)問(wèn)題也很簡(jiǎn)單,編譯錯(cuò)誤提示已經(jīng)給除了參考地址http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass我在proguard-rules.pro這個(gè)文件了加了一行
-ignorewarnings

編譯就通過(guò)了,ORZ...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冯事,隨后出現(xiàn)的幾起案子焦匈,更是在濱河造成了極大的恐慌,老刑警劉巖昵仅,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缓熟,死亡現(xiàn)場(chǎng)離奇詭異累魔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)够滑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)垦写,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人彰触,你說(shuō)我怎么就攤上這事梯投。” “怎么了况毅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵分蓖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我俭茧,道長(zhǎng)咆疗,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任母债,我火速辦了婚禮午磁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毡们。我一直安慰自己迅皇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布衙熔。 她就那樣靜靜地躺著登颓,像睡著了一般。 火紅的嫁衣襯著肌膚如雪红氯。 梳的紋絲不亂的頭發(fā)上框咙,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音痢甘,去河邊找鬼喇嘱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛塞栅,可吹牛的內(nèi)容都是我干的者铜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼放椰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼作烟!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砾医,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拿撩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后如蚜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體绷雏,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡头滔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年怖亭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涎显。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡兴猩,死狀恐怖期吓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情倾芝,我是刑警寧澤讨勤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站晨另,受9級(jí)特大地震影響潭千,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜借尿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一刨晴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧路翻,春花似錦狈癞、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至掉冶,卻和暖如春真竖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厌小。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工恢共, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人召锈。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓旁振,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親涨岁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拐袜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容