概述
隨著android項目的開發(fā),項目的體積肯定是會越來越大,結(jié)構(gòu)變得復(fù)雜。尤其是模塊化、重構(gòu)后,會產(chǎn)生許多代碼和資源的重復(fù)冗余。這對于程序員來說簡直就是噩夢。因為在開發(fā)中,絕大多數(shù)時間都是浪費(fèi)在編譯調(diào)試上,對于企業(yè)級的項目來說,尤為明顯。因此優(yōu)化代碼目錄結(jié)構(gòu),減少冗余代碼和資源,對項目都是很有幫助的。今天,我就通過Android Studio自帶的Code Analyze,介紹一下如何刪除無用資源。
介紹
刪除無用資源,主要有兩種方法。
- 一個就是double shift后,輸入"unused",可以找到remove unused resources進(jìn)行刪除。

- 第二個就是點擊菜單欄上的Analyze->Inspect Code...對項目進(jìn)行掃描。


可以指定檢查的范圍

等待一段時間后,控制臺的位置就會彈出一個檢查的結(jié)果。其實AS的代碼分析不僅僅是刪除無用資源這么一個功能,它其實就是一個lint檢查工具,可以幫助開發(fā)者優(yōu)化許多代碼問題,這里就先暫不一一講解了,后面會再寫一篇關(guān)于lint分析及如何解決的文章。我們這里要看的是performance下面的unused resources,lint工具會提示哪些資源是沒有被用到的,并且在右邊可以直接進(jìn)行刪除操作。被掃描出來的資源類型有圖片、string、drawable、layout、id、style等等。
遇到的坑
由于我是用家里的demo做的截圖,真正的項目開發(fā),結(jié)構(gòu)會復(fù)雜的多,到時候lint彈的提示也會多種多樣,unused的資源也會多很多。在公司項目的優(yōu)化中,由于模塊化的結(jié)構(gòu),使得資源被層層依賴,所以第一種方法,可以在正常的情況下使用,而第二種,需要刪除所有的build文件,這樣才能刪得比較徹底。而第一種方法,如果刪除了build文件夾的話,會有很多被依賴的資源也被掃出來,影響到正常的編譯。
這里還要說明的一點是,在刪除資源后,提交的時候一定要反復(fù)check,有些資源是通過庫的反射進(jìn)行調(diào)用的(push圖標(biāo)),或者是潛規(guī)則,需要將他們還原回來。
shrinkResources
這里發(fā)展一下知識點,在gradle的buildTypes中有個shrinkResources屬性,當(dāng)將其設(shè)置為true的時候,可以在打包apk的時候,自動刪除沒有被引用到的資源,并且可以在build中找到resources.txt,在最后會列出了被優(yōu)化的資源文件。這里有一點要提的是,并不是所有不被引用到的文件都會被過濾掉,很多被依賴到build后,還是能被打進(jìn)apk。


總結(jié)
總得來說,remove unused resources還是很重要的,無論是對編譯還是apk的體積,都很有幫助。下一篇,我將講解一下如何刪除無用的java文件。