python初学-----查找Android项目中未使用的string资源
2017-08-26 22:26
525 查看
最近在自学python,慢慢的写点小东西记录一下。
这个小程序是帮助我们查找一下我们定义在strings.xml中在java代码中和layout文件中未使用到的资源。我们就可以进行清理掉没用的资源文件。
我是这样一个思路:
0. 首先通过xml解析取出strings.xml中的name部分和值(value)部分,存放到list中
1.遍历找到app\src\main\java和res\layout路径下的所有文件,把文件路径存放到一个数组中
2.通过遍历每一个文件路径 打开文件,查找文件中是否存在strings.xml中有对应的引用R.string.xxx的部分,或者layout文件中有@string/xxx的部分,如果有就把之前存放的集合里面的数据删除掉。剩余的就是没有被踢出去的就是未被使用的。
具体代码如下:
只需要将该文件放置到项目根目录中,然后运行该文件即可。运行后的截图为:
通过该方法同样可以找到找到剔除drawable中未被使用的图片资源文件,这个下次在写。
这个小程序是帮助我们查找一下我们定义在strings.xml中在java代码中和layout文件中未使用到的资源。我们就可以进行清理掉没用的资源文件。
我是这样一个思路:
0. 首先通过xml解析取出strings.xml中的name部分和值(value)部分,存放到list中
1.遍历找到app\src\main\java和res\layout路径下的所有文件,把文件路径存放到一个数组中
2.通过遍历每一个文件路径 打开文件,查找文件中是否存在strings.xml中有对应的引用R.string.xxx的部分,或者layout文件中有@string/xxx的部分,如果有就把之前存放的集合里面的数据删除掉。剩余的就是没有被踢出去的就是未被使用的。
具体代码如下:
import os from os import path from xml.etree.ElementTree import ElementTree dir_root=path.abspath(os.getcwd()); print(dir_root) tree = ElementTree() s=dir_root+"\\app\\src\\main\\res\\values\\strings.xml" file=open(s,"r",encoding="utf-8") element=tree.parse(s) valueList=[] keyList=[] strings_data=[]; #遍历strings.xml中所有文本 for e in element: valueList.append(e.text) keyList.append(str(e.attrib.get("name"))) strings_data=list(zip(keyList,valueList)) #print(strings_data) #遍历指定目录下的所有文件 def dirlist(path, allfile): filelist = os.listdir(path) for filename in filelist: filepath = os.path.join(path, filename) if os.path.isdir(filepath): dirlist(filepath, allfile) else: allfile.append(filepath) return allfile file=[] dirlist(dir_root+"\\app\src\main\java", file) dirlist(str(dir_root+"\\app\src\main\\res\layout"), file) #查找java文件中的字符串 def findJavaFileToString(fileList,list): for fileitme in fileList: a=open(fileitme,"r",encoding="utf-8") sourceText=a.read() a.close() for item in list: if sourceText.find(str("R.string."+item[0])) !=-1: strings_data.remove(item) print("文件路径:",fileitme,",找到的字符串为:",item[0]) elif sourceText.find(str("@string/"+item[0])) !=-1: strings_data.remove(item) print("文件路径:",fileitme,",找到的字符串为:",item[0]) else: pass #print("文件路径:",fileitme,",未找到的字符串为:",item[0]) findJavaFileToString(file,strings_data) print("剩余未找到的为引用为:",strings_data)
只需要将该文件放置到项目根目录中,然后运行该文件即可。运行后的截图为:
通过该方法同样可以找到找到剔除drawable中未被使用的图片资源文件,这个下次在写。
相关文章推荐
- Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化
- 初学Android,使用菜单资源(十九)
- 类查找android中跨项目的数据库操作ContentProvider的使用
- 初学Android,使用菜单资源(十九) .
- Android资源的使用之String
- 初学Android,使用样式(style)资源(二十)
- 初学Android,使用Drawable资源之使用ClipDrawable资源(十六)
- 使用android-resource-remover删除项目中无用的资源,减少包的大小
- cocos2d-x-3.0beta使用Python 创建Cocos2d-x 项目和编译Android 项目
- Android未使用的资源文件查找工具
- Android在程序代码中使用String资源
- AndroidAnnotations 使用在library项目中出现无法找到R文件下资源索引的错误
- android在程序代码中使用String资源
- 如何在使用eclipse的情况下,清理android项目中的冗余class文件和资源文件以及冗余图片
- Android资源String中html标签的使用
- 初学Android,使用Drawable资源之使用StateListDrawable资源(十三)
- 初学Android,使用原始资源(二十三)
- 初学Android,使用Drawable资源之使用AnimationDrawable资源(十七)
- 【android】使用android-resource-remover删除项目中无用的资源,减少包的大小
- 初学Android,使用自定义的XML资源(十八)