随手写个拿来即用的 → Android资源文件查重脚本(上)

简介: Android资源文件查重脚本

0x1、起因


有群友在 开车吃瓜群技术问题


网络异常,图片无法展示
|


热心助人的 杰哥 嗅到了 又可以练手 的契机,反正等下班,看着挺简单,说不定自己也有用,丢下一句 下班前给你 后就开始了折腾。


0x2、脚本思路


① 基本思路


  • 一个项目包含多个模块,一般丢在同一个目录,递归遍历过滤获取所有资源文件就好,得出一个资源文件列表;


  • 对资源文件列表进行遍历,排除某些目录或文件(如/build,AndroidManifest.xml),将文件名相同的文件放一起;


  • 将遍历结果,格式化输出到文件中;


② 实现细节


  • 1、检索所有资源文件


利用 os.listdir() 可获取当前目录下所有文件,os.chdir() 能切换当前目录,遍历判断:文件夹→往下递归,资源文件→保存,非资源文件→跳过,当然为了使检索过程更直观,可把文件类型打印出来,这一步能得到资源列表;


  • 2、分析名字重复的资源文件


遍历上一步获取到的资源列表,利用 any()函数,批量判断资源是否在排除列表中,同时获取文件md5,接着这样的键值对 文件名:list('md5→文件绝对路径') 保存到字典中;


  • 3、格式化输出


对上一步中产出的重名文件字典进行处理,一些空判断,然后是遍历,拼接输出文本,最后输出到结果文件中。


整体流程比较简单,主要是一些细节处理。


③ 使用与效果演示


来看下脚本的具体效果吧 (运行需安装Python环境,官网下个安装包傻瓜下一步就好):


网络异常,图片无法展示
|


直接 双击打开 或命令行键入 python repeat_res_check.py 都可:


网络异常,图片无法展示
|


接着目录下会生成两个文件:


  • name_repeat_result.txt → 文件名相同的结果文件,适用于抽取同名文件不同文件内容比对(md5不同)


网络异常,图片无法展示
|


  • md5_repeat_result.txt → md5相同的但文件名不同的文件,适用于资源瘦身减少重复文件~


网络异常,图片无法展示
|


读者也可按需对资源类型、排除目录/文件进行定制,直接改这里,所以其实并不局限于Android项目查重:


网络异常,图片无法展示
|


如果有Python基础,还可以自行扩展,比如索引资源被引用位置,进行多文件等的批量替换~


相关文章
|
6月前
|
安全 Shell Android开发
Android系统 init.rc开机执行shell脚本
Android系统 init.rc开机执行shell脚本
1107 0
|
6月前
|
Android开发
如何用Airtest脚本无线连接Android设备?
如何用Airtest脚本无线连接Android设备?
117 0
|
5月前
|
Android开发
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
Android Gradle开发—脚本实现自动打包后复制一份APK文件,并修改APK名称,到指定目录作备份
275 0
|
6月前
|
算法 Java API
Groovy脚本基础全攻略,android面试算法题
Groovy脚本基础全攻略,android面试算法题
|
6月前
|
Android开发
自动化脚本之Android系统修改推送
自动化脚本之Android系统修改推送
33 0
|
6月前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
53 0
|
Android开发
Android init.rc脚本详解
Android init.rc脚本详解
317 2
|
Shell Android开发
Android init language与init.rc初始化脚本
Android init language与init.rc初始化脚本
86 0
|
XML Java 程序员
学习android随手记 之 android:name android:id
学习android随手记 之 android:name android:id
123 0
|
Java 程序员 Android开发
关于安卓脚本打包apk
Android开发过程中,一般习惯依赖于用Android studio来打包apk,通过图形化界面来打包,操作也简单。这种情况一般适用于程序员,有一种情况是,客户需要自己打包,然而客户不是开发者,不懂用Android studio,这个时候要不给他们提供一个打包文档,要不手把手教,但还是有可能存在失误。
522 1