您当前的位置: 首页 > 
  • 0浏览

    0关注

    674博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

腾讯Matrix之ApkChecker的使用

沙漠一只雕得儿得儿 发布时间:2022-06-13 14:11:40 ,浏览量:0

简介

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文件

 mapping文件位置:

debug包是没有mappng文件的,需要编译release包即可,编译完成后具体位置在项目目录下:

关注
打赏
1657159701
查看更多评论
立即登录/注册

微信扫码登录

0.8048s