????前段時間需要創(chuàng)建一個新的項目,在已有的一個app項目上代碼復制一份,將其中某些模塊和資源文件進行修改,段時間內快速開發(fā)上線一個新的app的功能需求,我相信很多開發(fā)者都遇到過這種需求,當時將項目拷貝過來,相應模塊刪除修改后,還有很多無用資源文件,不知道哪些文件有沒有被引用,人工排除比較費勁,想要通過Lint工具掃描工程資源,但是發(fā)現(xiàn)Lint不太好用(基于自身對Lint用的較少,而且如果工程里面存在反射,過濾結果會比較麻煩),于是上github查詢了一番,發(fā)現(xiàn)了一個比較好用的資源工具類---ScanUnusedResouce。
? ? ScanUnusedResouce是一個基于Java程序的工具類,能夠過濾掉通過反射調用的資源,可以在android studio中運行java程序的方式(as中運行java程序可參考此文)來檢測項目中的無用資源,原理就是通過運行main()方法,把所有java和xml文件以字符串掃描到內存,然后拿到資源文件(xml,png,jpg等)名稱做匹配查找,如果沒有匹配到,該資源就是無用資源,可以直接刪除。
? ? 此工具類優(yōu)缺點:
? ? ? ? ?優(yōu)點:
????????????????????1.便于操作,非常好用
? ? ? ? ? ? ? ? ? ? ?2.可以過濾掉通過反射調用的資源
????????????缺點:
? ? ? ? ????????1.不能解決資源拼接的問題
? ? ? ? ? ? ? ? ?2.不能處理存在很多資源前綴相同的情況
在ScanUnusedResouce中,將ROOT_DIR的路徑初始化為自己需要掃描項目的根路徑,IMG_DIRS中的drawable分別改成對應的mipmap,并將getAllUnusedResExcept()方法中創(chuàng)建FileReader的file文件路徑略微修改即可,此工具類中也定義了一個HOLD的字符數組,用于存在拼接查找資源的邏輯,根據自己的項目實際情況可進行修改操作。掃描結果如下:

掃描出的這些資源文件和類都是無用資源,可以刪除,而且類中有個字段控制是否自動刪除操作的。
最后貼上工具類鏈接地址:ScanUnusedResouce? ?有問題多多討論!