概述
隨著android項(xiàng)目的開發(fā),項(xiàng)目的體積肯定是會(huì)越來(lái)越大,結(jié)構(gòu)變得復(fù)雜沸久。尤其是模塊化季眷、重構(gòu)后,會(huì)產(chǎn)生許多代碼和資源的重復(fù)冗余卷胯。這對(duì)于程序員來(lái)說(shuō)簡(jiǎn)直就是噩夢(mèng)子刮。因?yàn)樵陂_發(fā)中,絕大多數(shù)時(shí)間都是浪費(fèi)在編譯調(diào)試上窑睁,對(duì)于企業(yè)級(jí)的項(xiàng)目來(lái)說(shuō)挺峡,尤為明顯。因此優(yōu)化代碼目錄結(jié)構(gòu)担钮,減少冗余代碼和資源橱赠,對(duì)項(xiàng)目都是很有幫助的。今天箫津,我就通過(guò)Android Studio自帶的Code Analyze狭姨,介紹一下如何刪除無(wú)用資源。
介紹
刪除無(wú)用資源苏遥,主要有兩種方法饼拍。
- 一個(gè)就是double shift后,輸入"unused"田炭,可以找到remove unused resources進(jìn)行刪除惕耕。
- 第二個(gè)就是點(diǎn)擊菜單欄上的Analyze->Inspect Code...對(duì)項(xiàng)目進(jìn)行掃描。
可以指定檢查的范圍
等待一段時(shí)間后诫肠,控制臺(tái)的位置就會(huì)彈出一個(gè)檢查的結(jié)果。其實(shí)AS的代碼分析不僅僅是刪除無(wú)用資源這么一個(gè)功能欺缘,它其實(shí)就是一個(gè)lint檢查工具栋豫,可以幫助開發(fā)者優(yōu)化許多代碼問(wèn)題,這里就先暫不一一講解了谚殊,后面會(huì)再寫一篇關(guān)于lint分析及如何解決的文章丧鸯。我們這里要看的是performance下面的unused resources,lint工具會(huì)提示哪些資源是沒(méi)有被用到的嫩絮,并且在右邊可以直接進(jìn)行刪除操作丛肢。被掃描出來(lái)的資源類型有圖片、string剿干、drawable蜂怎、layout、id置尔、style等等杠步。
遇到的坑
由于我是用家里的demo做的截圖,真正的項(xiàng)目開發(fā),結(jié)構(gòu)會(huì)復(fù)雜的多幽歼,到時(shí)候lint彈的提示也會(huì)多種多樣朵锣,unused的資源也會(huì)多很多。在公司項(xiàng)目的優(yōu)化中甸私,由于模塊化的結(jié)構(gòu)诚些,使得資源被層層依賴,所以第一種方法皇型,可以在正常的情況下使用诬烹,而第二種,需要?jiǎng)h除所有的build文件犀被,這樣才能刪得比較徹底椅您。而第一種方法,如果刪除了build文件夾的話寡键,會(huì)有很多被依賴的資源也被掃出來(lái)掀泳,影響到正常的編譯。
這里還要說(shuō)明的一點(diǎn)是西轩,在刪除資源后员舵,提交的時(shí)候一定要反復(fù)check,有些資源是通過(guò)庫(kù)的反射進(jìn)行調(diào)用的(push圖標(biāo))藕畔,或者是潛規(guī)則马僻,需要將他們還原回來(lái)。
shrinkResources
這里發(fā)展一下知識(shí)點(diǎn)注服,在gradle的buildTypes中有個(gè)shrinkResources屬性韭邓,當(dāng)將其設(shè)置為true的時(shí)候,可以在打包apk的時(shí)候溶弟,自動(dòng)刪除沒(méi)有被引用到的資源女淑,并且可以在build中找到resources.txt,在最后會(huì)列出了被優(yōu)化的資源文件辜御。這里有一點(diǎn)要提的是鸭你,并不是所有不被引用到的文件都會(huì)被過(guò)濾掉,很多被依賴到build后擒权,還是能被打進(jìn)apk袱巨。
總結(jié)
總得來(lái)說(shuō),remove unused resources還是很重要的碳抄,無(wú)論是對(duì)編譯還是apk的體積愉老,都很有幫助。下一篇纳鼎,我將講解一下如何刪除無(wú)用的java文件俺夕。