Android 项目越来越臃肿,冗余资源越来越多,怎么办? Cleaner 助您一键自动发现并清理项目中的冗余资源。
相关 Github 源码 • Cleaner
版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。
背景
其实这是个低频需求,只是因为在目前公司的项目中,一个 Android Studio 工程同时支撑多个 App,在持续迭代一段时间后, 免不了多出一些冗余的资源,比如 Image、Color、Drawable 等等,耗费人力去清理显然不划算,还不如简单粗暴写一脚本是吧。
原理
实现过程也确实很简单很粗暴:
- 遍历指定的文件夹,发现相关文件;
- 遍历相关文件和内容,引用数为 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,一个月基本完成;机器学习 Image Caption 因为电脑内存不够用,没啥进度,暂时搁置;ICO 这么火,一茬茬韭菜?胆子不够大,未敢妄入,然区块链还是很牛逼的,去中心化、共识问题等等还是值得深挖的;生财心切,最近看起了运营和产品的一些套路... 恩,有想法的都砸过来吧,一起折腾折腾(捂脸)...