android删除无用资源文件的python脚本

随着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以上版本的解释器)

上一篇:org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query


下一篇:code is 9998;desc is 插入失败exception is org.hibernate.exception.JDBCConnectionException: Could not op