Android 項目越來越臃腫饥瓷,冗余資源越來越多,怎么辦? Cleaner 助您一鍵自動發(fā)現(xiàn)并清理項目中的冗余資源葡幸。
相關(guān) Github 源碼 ? Cleaner
版權(quán)聲明:本文為 frendy 原創(chuàng)文章,可以隨意轉(zhuǎn)載贺氓,但請務(wù)必在明確位置注明出處蔚叨。
背景
其實這是個低頻需求,只是因為在目前公司的項目中辙培,一個 Android Studio 工程同時支撐多個 App蔑水,在持續(xù)迭代一段時間后, 免不了多出一些冗余的資源扬蕊,比如 Image搀别、Color、Drawable 等等尾抑,耗費人力去清理顯然不劃算歇父,還不如簡單粗暴寫一腳本是吧蒂培。
原理
實現(xiàn)過程也確實很簡單很粗暴:
- 遍歷指定的文件夾,發(fā)現(xiàn)相關(guān)文件榜苫;
- 遍歷相關(guān)文件和內(nèi)容护戳,引用數(shù)為 0 即清理。
這里貼上部分清理圖片的源碼:
def findFiles(dir):
...
for parent, dirnames, filenames in os.walk(dir):
for filename in filenames:
if "\\build" in parent or "\\.idea" in parent or "\\.gradle" in parent:
continue
ext = file_extension(filename)
if ext == ".png" or ext == ".jpg":
IMAGE.append(os.path.join(parent, filename))
elif ext == ".java" or ext == ".kt" or ext == ".xml":
FILE.append(os.path.join(parent, filename))
if "color.xml" in filename:
COLOR.append(os.path.join(parent, filename))
if "\\drawable" in parent and ext == ".xml":
DRAWABLE.append(os.path.join(parent, filename))
def cleanImage(images, files):
...
for image in images:
isUsed = False
for file in files:
if(containPath(image, file)):
isUsed = True
#print("++ Used : %s, %s" % (image, file))
continue
if isUsed == False:
cnt += 1
print(">> Redundant : " + image)
if args.type == "svn":
os.system("svn del " + image)
else:
os.remove(image)
用法
示例
最后嘮叨下近況垂睬,幫紙媒做 App媳荒,一個月基本完成;機(jī)器學(xué)習(xí) Image Caption 因為電腦內(nèi)存不夠用羔飞,沒啥進(jìn)度肺樟,暫時擱置;ICO 這么火逻淌,一茬茬韭菜么伯?膽子不夠大,未敢妄入卡儒,然區(qū)塊鏈還是很牛逼的田柔,去中心化、共識問題等等還是值得深挖的骨望;生財心切硬爆,最近看起了運營和產(chǎn)品的一些套路... 恩,有想法的都砸過來吧擎鸠,一起折騰折騰(捂臉)...