Matrix-ApkChecker 作为Matrix系统的一部分,是针对android安装包的分析检测工具,根据一系列设定好的规则检测apk是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。
- 官方文档
- Matrix Github
运行前准备工作
- 从官方地址下载ApkChecker.jar (本次使用matrix-apk-canary-2.0.2.jar)
- 准备配置文件config.json ,下面是配置文件(与官方文档示例有区别,具体配置根据自己项目需求)
特别说明 :
- –apk 输入apk文件路径(默认文件名以apk结尾即可)
- –output 输出结果文件路径(不含后缀,会根据format决定输出文件的后缀)
- –format 结果文件的输出格式(例如 html、json等)
- –formatConfig 对结果文件输出格式的一些配置项(json数组格式)
- –rTxt R.txt文件的路径
官方文档参数很多,这里给出部分参数,具体参考请移步到官方文档
- 运行命令
结果文件分析
按文件大小排序列出apk中包含的文件
列出超过一定大小的文件,可按文件后缀过滤,并且按文件大小排序
读取manifest的信息
从AndroidManifest.xml文件中读取apk的全局信息,如packageName、versionCode等。
检查是否经过了资源混淆
检查apk是否经过了资源混淆,推荐使用资源混淆来进一步减小apk的大小 (这里没有经过资源混淆,因为混淆过后,无法找出项目中相关文件)
搜索不含alpha通道的png文件
对于不含alpha通道的png文件,可以转成jpg格式来减少文件的大小
搜索未经压缩的文件类型
某个文件类型的所有文件都没有经过压缩,可以考虑是否需要压缩
搜索冗余的文件
对于两个内容完全相同的文件,应该去冗余
搜索apk中包含的无用资源
apk中未经使用到的资源,应该予以删除
搜索apk中包含的无用assets文件
apk中未经使用的assets文件,应该予以删除
统计apk中包含的R类以及R类中的field count
编译之后,代码中对资源的引用都会优化成int常量,除了R.styleable之外,其他的R类其实都可以删除
统计方法数
统计dex包含的方法数,并支持将输出结果按照类名(class)或者包名(package)来分组