Matrix是微信终端自研和正在使用的一套APM(Application Performance Management)系统。 Matrix-ApkChecker 作为Matrix系统的一部分,是针对android安装包的分析检测工具,根据一系列设定好的规则检测apk是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。Matrix-ApkChecker以一个jar包的形式提供使用,通过命令行执行 java -jar ApkChecker.jar 即可运行。
Matrix-ApkChecker 的使用 步骤一:下载jar包从官方地址下载ApkChecker.jar (本次使用matrix-apk-canary-2.0.8.jar)
APK Check 以独立的 jar 包提供 (matrix-apk-canary-2.0.8.jar)
在官网https://github.com/Tencent/matrix 中可以直接搜索jar,找到下载链接
步骤二:配置检测文件config.json 准备配置文件config.json ,下面是配置文件(与官方文档示例有区别,具体配置根据自己项目需求){
"--apk":"C:/Users/Administrator/Desktop/test/你自己应用包名.apk",
"--mappingTxt":"",
"--resMappingTxt":"",
"--output":"C:/Users/Administrator/Desktop/test/apk-checker-result",
"--unzip":"C:/Users/Administrator/Desktop/test/matrixresult",
"--format":"mm.html,mm.json",
"--formatConfig":
[
{
"name":"-countMethod",
"group":
[
{
"name":"Android System",
"package":"android"
},
{
"name":"java system",
"package":"java"
},
{
"name":"com.tencent.test.$",
"package":"com.tencent.test.$"
}
]
}
],
"options": [
{
"name":"-manifest"
},
{
"name":"-fileSize",
"--min":"20",
"--order":"desc",
"--suffix":"png, jpg, jpeg, gif, arsc"
},
{
"name":"-countMethod",
"--group":"package"
},
{
"name":"-checkResProguard"
},
{
"name":"-findNonAlphaPng",
"--min":"10"
},
{
"name":"-checkMultiLibrary"
},
{
"name":"-uncompressedFile",
"--suffix":"png, jpg, jpeg, gif, arsc"
},
{
"name":"-countR"
},
{
"name":"-duplicatedFile"
},
{
"name":"-unusedAssets",
"--ignoreAssets":["*.so" ]
}
]
}
步骤三:运行命令进行分析
我们这里为了方便把需要分析的apk、config.json、matrix-apk-canary-2.0.8.jar这三个放在一个目录里,如果不在一个目录的话,需要写绝对路径:
运行命令:java -jar matrix-apk-canary-2.0.8.jar --config config.json
运行完成后,文件夹会多出分析结果:
打开html就是详细结果,每项结果的具体含义可以参考官网解释Matrix Android ApkChecker · Tencent/matrix Wiki · GitHub:
以上是使用debug包检测,如果是release包,则可以加上mapping.txt文件,如果想要检查R文件的结果,可以添加一些配置参数,如下的config.json,把mapping.txt和R文件添加上了,最后的html就有R文件的分析结果了
{
"--apk":"C:/Users/Administrator/Desktop/apk-checker/xxx.apk",
"--mappingTxt":"C:/Users/Administrator/Desktop/apk-checker/mapping.txt",
"--resMappingTxt":"",
"--output":"C:/Users/Administrator/Desktop/apk-checker/apk-checker-result",
"--unzip":"C:/Users/Administrator/Desktop/apk-checker/matrixresult",
"--format":"mm.html,mm.json",
"--formatConfig":
[
{
"name":"-countMethod",
"group":
[
{
"name":"Android System",
"package":"android"
},
{
"name":"java system",
"package":"java"
},
{
"name":"com.tencent.test.$",
"package":"com.tencent.test.$"
}
]
}
],
"options": [
{
"name":"-manifest"
},
{
"name":"-fileSize",
"--min":"20",
"--order":"desc",
"--suffix":"png, jpg, jpeg, gif, arsc"
},
{
"name":"-countMethod",
"--group":"package"
},
{
"name":"-checkResProguard"
},
{
"name":"-findNonAlphaPng",
"--min":"10"
},
{
"name":"-checkMultiLibrary"
},
{
"name":"-uncompressedFile",
"--suffix":"png, jpg, jpeg, gif, arsc"
},
{
"name":"-countR"
},
{
"name":"-duplicatedFile"
},
{
"name":"-unusedResources",
"--rTxt":"C:/Users/Administrator/Desktop/apk-checker/R.txt",
"--ignoreResources"
:["R.raw.*",
"R.style.*",
"R.attr.*",
"R.id.*",
"R.string.ignore_*"
]
},
{
"name":"-unusedAssets",
"--ignoreAssets":["*.so" ]
}
]
}
补充:Android studio的R文件和mapping文件位置
R文件位置:
目前高版的Android studio的R文件位置可参考: build-->intermediates-->runtime_symbol_list,在这个文件夹下面查R文件
debug包是没有mappng文件的,需要编译release包即可,编译完成后具体位置在项目目录下: