????前段時(shí)間需要?jiǎng)?chuàng)建一個(gè)新的項(xiàng)目厉萝,在已有的一個(gè)app項(xiàng)目上代碼復(fù)制一份,將其中某些模塊和資源文件進(jìn)行修改榨崩,段時(shí)間內(nèi)快速開(kāi)發(fā)上線一個(gè)新的app的功能需求谴垫,我相信很多開(kāi)發(fā)者都遇到過(guò)這種需求,當(dāng)時(shí)將項(xiàng)目拷貝過(guò)來(lái)母蛛,相應(yīng)模塊刪除修改后翩剪,還有很多無(wú)用資源文件,不知道哪些文件有沒(méi)有被引用彩郊,人工排除比較費(fèi)勁前弯,想要通過(guò)Lint工具掃描工程資源蚪缀,但是發(fā)現(xiàn)Lint不太好用(基于自身對(duì)Lint用的較少,而且如果工程里面存在反射恕出,過(guò)濾結(jié)果會(huì)比較麻煩)询枚,于是上github查詢了一番,發(fā)現(xiàn)了一個(gè)比較好用的資源工具類---ScanUnusedResouce浙巫。
? ? ScanUnusedResouce是一個(gè)基于Java程序的工具類金蜀,能夠過(guò)濾掉通過(guò)反射調(diào)用的資源,可以在android studio中運(yùn)行java程序的方式(as中運(yùn)行java程序可參考此文)來(lái)檢測(cè)項(xiàng)目中的無(wú)用資源的畴,原理就是通過(guò)運(yùn)行main()方法渊抄,把所有java和xml文件以字符串掃描到內(nèi)存,然后拿到資源文件(xml,png,jpg等)名稱做匹配查找丧裁,如果沒(méi)有匹配到护桦,該資源就是無(wú)用資源,可以直接刪除煎娇。
? ? 此工具類優(yōu)缺點(diǎn):
? ? ? ? ?優(yōu)點(diǎn):
????????????????????1.便于操作嘶炭,非常好用
? ? ? ? ? ? ? ? ? ? ?2.可以過(guò)濾掉通過(guò)反射調(diào)用的資源
????????????缺點(diǎn):
? ? ? ? ????????1.不能解決資源拼接的問(wèn)題
? ? ? ? ? ? ? ? ?2.不能處理存在很多資源前綴相同的情況
在ScanUnusedResouce中,將ROOT_DIR的路徑初始化為自己需要掃描項(xiàng)目的根路徑,IMG_DIRS中的drawable分別改成對(duì)應(yīng)的mipmap逊桦,并將getAllUnusedResExcept()方法中創(chuàng)建FileReader的file文件路徑略微修改即可眨猎,此工具類中也定義了一個(gè)HOLD的字符數(shù)組,用于存在拼接查找資源的邏輯强经,根據(jù)自己的項(xiàng)目實(shí)際情況可進(jìn)行修改操作睡陪。掃描結(jié)果如下:
掃描出的這些資源文件和類都是無(wú)用資源,可以刪除匿情,而且類中有個(gè)字段控制是否自動(dòng)刪除操作的兰迫。
最后貼上工具類鏈接地址:ScanUnusedResouce? ?有問(wèn)題多多討論!