随着android项目的进行,如果没有及时删除无用的资源时安装包会越来越大,是时候整理一下废弃资源缩小压缩包了,少年!
其实判断一个资源(drawable,layout)是否没有被使用很简单,文件名(不包含后缀)去文件中查找一下就行了,没找到就没有用到,直接删除了就可以了
python的字符串处理相对简单一点,就写了个脚本,供大家参考:
import os
import os.path
rootdir = \'D:\HitFm_v2.1.6\hitfm\src\'
pngFiles = []
xmlFiles = []
javaFiles = []
tempFiles = []
for parent,dirnames,filenames in os.walk(rootdir):
for filename in filenames:
if(filename.find(\'.png\') != -1):pngFiles.append(os.path.join(parent,filename))
if(filename.find(\'.jpg\') != -1):pngFiles.append(os.path.join(parent,filename))
if(filename.find(\'.xml\') != -1):xmlFiles.append(os.path.join(parent,filename))
if(filename.find(\'.java\') != -1):javaFiles.append(os.path.join(parent,filename))
for pngFile in pngFiles:
pngName = pngFile.split(\'\\\')[-1]
pngnowName = pngName.split(\'.\')[0]
if(pngFile.find(\'res\') == -1):continue
bFind = False
for javaFile in javaFiles:
f = open(javaFile, \'rb\')
javaStr = f.read().decode()
if(javaStr.find(pngnowName) != -1):bFind = True
for xmlFile in xmlFiles:
f = open(xmlFile, \'rb\')
javaStr = f.read().decode()
if(javaStr.find(pngnowName) != -1):bFind = True
if(bFind == False):
print (pngFile)
os.remove(pngFile)
for xmlFile in xmlFiles:
xmlName = xmlFile.split(\'\\\')[-1]
xmlnowName = xmlName.split(\'.\')[0]
if(xmlFile.find(\'res\') == -1):continue
bFind = False
for javaFile in javaFiles:
f = open(javaFile, \'rb\')
javaStr = f.read().decode()
if(javaStr.find(xmlnowName) != -1):bFind = True
for xmlFile2 in xmlFiles:
f = open(xmlFile2, \'rb\')
javaStr = f.read().decode()
if(javaStr.find(xmlnowName) != -1):bFind = True
if(bFind == False):
print (xmlFile)
tempFiles.append(xmlFile)
for tempFile in tempFiles:
print (tempFile)
os.remove(tempFile)
使用的时候只需要把rootdir = \'D:\HitFm_v2.1.6\hitfm\src\'修改为自己的代码目录,在命令行里执行xx.py即可(需要安装python3.0以上版本的解释器)