多方法批量删除Android中无用的资源(更新Android Studio2.1工具)
2017-07-17 19:04
555 查看
(转载)http://blog.csdn.net/byszy/article/details/50524816
一个app开发久了,项目中难免会有越来越多没有被调用到却没有被及时删除的资源文件, 尤其是体积较大的图片文件,于是我们会发现我们的app包越来越大,越来越臃肿。于是,定期的检测我们工程中哪些资源已经被废弃,是十分必要的。要做这么一个工作,分为两步,一步是查找到这些无用的资源,另一步是批量删掉他们!
网上类似的工具有一些,其中“列出”这一步骤我整理了两种方案
1、使用 AndroidUnusedResources.jar(不推荐)
这是一个第三方的jar包,直接下载该jar包到自己的工程根目录,使用命令
Java -jar AndroidUnusedResources1.6.2.jar>>d:\unused.txt
即可将不用的资源导出到该txt文件,达到目的。我个人不推荐这个方法,因为第二种更简单~第一种方法详情请看以下链接:
http://blog.csdn.net/u012808234/article/details/47440629
2、直接使用Adrdoi Studio的lint功能(推荐)
看到这里,你肯惊呼,哇,原来studio自己就有这个功能啊!?是的,具体操作如下:
点开以后,输入 Unused resources打开
执行完毕以后,你会得到一个类似图中的无用资源清单
可以看到有drawable,有dimen,有anim等各种类型的resources。
另外,你也可以将此结果导出为文件,便于对照,导出的按钮在最左侧的菜单栏。
——– 2016.4.4更新
接下来要删除了,在最新的版本(Studio2.1)中,lint已经可以自行删除无用资源,这样的话,我们的Python脚本也不需要写了,具体操作如下:
注意到更之前的版本比,右侧的操作多一个了resolution,我们选择Remove All Unused Resources。片刻后弹出一个确认对话框,确认之
搞定了!
——–2016.4.4更新结束
——–历史版本——–
接下来要删除了,可惜lint并没有提供直接删除的操作,我们要自己删除,你可以自己删除,当然也可以写个脚本,我来分享一下我自己的方案。
以删除图片资源为例,我们的思路就是找到文件名,找到对应目录,删掉文件:
1、首先,把图片相关的数据拷贝出来,放在一个文本文件中
整理一下,用行编辑和替换,得到一个纯文件名的文档:
2、写一个简单的python文件,功能是读文档,把文档里面每一行数据拼成一个文件路径,然后调用删除文件的命令rm,删掉。
代码还有很多要优化的地方,文本就不贴了,大家看看思路即可
(有朋友反应图太小了看不清楚,我代码也贴一下吧)
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ok,直接执行脚本,那些无用的图片就被统统删掉了~
——–历史版本结束——–
如果resourcesNotFound的错误,建议自行跑跑monkey,送命令
adb shell monkey -p com.xxx.xxx -s 500 100000
一个app开发久了,项目中难免会有越来越多没有被调用到却没有被及时删除的资源文件, 尤其是体积较大的图片文件,于是我们会发现我们的app包越来越大,越来越臃肿。于是,定期的检测我们工程中哪些资源已经被废弃,是十分必要的。要做这么一个工作,分为两步,一步是查找到这些无用的资源,另一步是批量删掉他们!
网上类似的工具有一些,其中“列出”这一步骤我整理了两种方案
1、使用 AndroidUnusedResources.jar(不推荐)
这是一个第三方的jar包,直接下载该jar包到自己的工程根目录,使用命令
Java -jar AndroidUnusedResources1.6.2.jar>>d:\unused.txt
即可将不用的资源导出到该txt文件,达到目的。我个人不推荐这个方法,因为第二种更简单~第一种方法详情请看以下链接:
http://blog.csdn.net/u012808234/article/details/47440629
2、直接使用Adrdoi Studio的lint功能(推荐)
看到这里,你肯惊呼,哇,原来studio自己就有这个功能啊!?是的,具体操作如下:
点开以后,输入 Unused resources打开
执行完毕以后,你会得到一个类似图中的无用资源清单
可以看到有drawable,有dimen,有anim等各种类型的resources。
另外,你也可以将此结果导出为文件,便于对照,导出的按钮在最左侧的菜单栏。
——– 2016.4.4更新
接下来要删除了,在最新的版本(Studio2.1)中,lint已经可以自行删除无用资源,这样的话,我们的Python脚本也不需要写了,具体操作如下:
注意到更之前的版本比,右侧的操作多一个了resolution,我们选择Remove All Unused Resources。片刻后弹出一个确认对话框,确认之
搞定了!
——–2016.4.4更新结束
——–历史版本——–
接下来要删除了,可惜lint并没有提供直接删除的操作,我们要自己删除,你可以自己删除,当然也可以写个脚本,我来分享一下我自己的方案。
以删除图片资源为例,我们的思路就是找到文件名,找到对应目录,删掉文件:
1、首先,把图片相关的数据拷贝出来,放在一个文本文件中
整理一下,用行编辑和替换,得到一个纯文件名的文档:
2、写一个简单的python文件,功能是读文档,把文档里面每一行数据拼成一个文件路径,然后调用删除文件的命令rm,删掉。
代码还有很多要优化的地方,文本就不贴了,大家看看思路即可
(有朋友反应图太小了看不清楚,我代码也贴一下吧)
import os if __name__ == '__main__': #工程资源的路径 main = "E:/git-work/android/app/src/main/res/" #删除的图片可能存在的路径 d = "drawable/" m = "drawable-mdpi/" lh = "drawable-lhdpi/" h = "drawable-hdpi/" xh = "drawable-xhdpi/" xxh = "drawable-xxhdpi/" #打开我们导出的无用资源列表 f = open("C:/Users/Administrator/Desktop/res.txt", 'r') line = f.readline() #以行为单位循环 while line: line = f.readline() if (line != ""): #注意line读出来以后 行末有空格,替换一下,加个.*的后缀可以删除xml、.9等其它格式的图片 line = line.replace('\n','.*') print ("==="+line) #调用系统方法删除 简单粗暴 os.system("rm "+main+d+line) os.system("rm "+main+m+line) os.system("rm "+main+lh+line) os.system("rm "+main+h+line) os.system("rm "+main+xh+line) os.system("rm "+main+xxh+line) f.close()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
ok,直接执行脚本,那些无用的图片就被统统删掉了~
——–历史版本结束——–
如果resourcesNotFound的错误,建议自行跑跑monkey,送命令
adb shell monkey -p com.xxx.xxx -s 500 100000
相关文章推荐
- 多方法批量删除Android中无用的资源(更新Android Studio2.1工具)
- Android studio 快速删除无用资源的方法
- Android软件去广告方法总结[2012.3.6更新工具]
- php+mysqli实现批量执行插入、更新及删除数据的方法
- 使用android-resource-remover删除项目中无用的资源,减少包的大小
- php+mysqli实现批量执行插入、更新及删除数据的方法
- Android自动清理无用资源工具
- android高手之路--删除工程里面无用的代码和资源
- Android清除工程中无用资源文件的两种方法
- Android Studio删除工程里面无用的代码和资源
- Android自动清理 无用 多余 未引用 未关联资源工具
- 关于图片资源在android2.1/2.2/2.3下无法显示的问题以及解决方法
- Android自动清理 无用 多余 未引用 未关联资源工具
- Android通讯录联系人的读取、更新、插入、删除等方法
- Android 联系人管理(包括大部分字段),增删该查,批量插入、删除、更新,等等; 可能有问题,还望指证。
- 分享Android开发实用小工具:图标批量提取工具:为APP开发快速获取资源
- Android Studio删除无用的资源文件
- -------------------------------android高手之路--删除工程里面无用的代码和资源
- Android lint 自动检测并删除无用资源
- [快捷工具] windows下批量删除空目录的简单方法