Android 項(xiàng)目越來越臃腫,冗余資源越來越多,怎么辦? Cleaner 助您一鍵自動(dòng)發(fā)現(xiàn)并清理項(xiàng)目中的冗余資源。
相關(guān) Github 源碼 ? Cleaner
版權(quán)聲明:本文為 frendy 原創(chuàng)文章,可以隨意轉(zhuǎn)載,但請(qǐng)務(wù)必在明確位置注明出處。
背景
其實(shí)這是個(gè)低頻需求,只是因?yàn)樵谀壳肮镜捻?xiàng)目中,一個(gè) Android Studio 工程同時(shí)支撐多個(gè) App,在持續(xù)迭代一段時(shí)間后, 免不了多出一些冗余的資源,比如 Image、Color、Drawable 等等,耗費(fèi)人力去清理顯然不劃算,還不如簡(jiǎn)單粗暴寫一腳本是吧。
原理
實(shí)現(xiàn)過程也確實(shí)很簡(jiǎ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)
用法

Usage
示例

Sample
最后嘮叨下近況,幫紙媒做 App,一個(gè)月基本完成;機(jī)器學(xué)習(xí) Image Caption 因?yàn)殡娔X內(nèi)存不夠用,沒啥進(jìn)度,暫時(shí)擱置;ICO 這么火,一茬茬韭菜?膽子不夠大,未敢妄入,然區(qū)塊鏈還是很牛逼的,去中心化、共識(shí)問題等等還是值得深挖的;生財(cái)心切,最近看起了運(yùn)營和產(chǎn)品的一些套路... 恩,有想法的都砸過來吧,一起折騰折騰(捂臉)...