Android 冗余资源清理工具 • Cleaner


Android 项目越来越臃肿,冗余资源越来越多,怎么办? Cleaner 助您一键自动发现并清理项目中的冗余资源。

相关 Github 源码 • Cleaner 版权声明:本文为 frendy 原创文章,可以随意转载,但请务必在明确位置注明出处。


背景


其实这是个低频需求,只是因为在目前公司的项目中,一个 Android Studio 工程同时支撑多个 App,在持续迭代一段时间后, 免不了多出一些冗余的资源,比如 Image、Color、Drawable 等等,耗费人力去清理显然不划算,还不如简单粗暴写一脚本是吧。


原理


实现过程也确实很简单很粗暴:

  1. 遍历指定的文件夹,发现相关文件;
  2. 遍历相关文件和内容,引用数为 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,一个月基本完成;机器学习 Image Caption 因为电脑内存不够用,没啥进度,暂时搁置;ICO 这么火,一茬茬韭菜?胆子不够大,未敢妄入,然区块链还是很牛逼的,去中心化、共识问题等等还是值得深挖的;生财心切,最近看起了运营和产品的一些套路… 恩,有想法的都砸过来吧,一起折腾折腾(捂脸)…


欢迎来撩

frendy

It will shine for us...