包体优化 matrix - 安装包的分析检测工具

plucky · 2021年10月20日 · 219 次阅读
本帖已被设为精华帖!

matrix - 安装包的分析检测工具

Matrix 是微信终端自研和正在使用的一套 APM(Application Performance Management)系统。 ApkChecker 作为 Matrix 系统的一部分,是针对 android 安装包的分析检测工具,根据一系列设定好的规则检测 apk 是否存在特定的问题,并输出较为详细的检测结果报告,用于分析排查问题以及版本追踪。ApkChecker 以一个 jar 包的形式提供使用,通过命令行执行 java -jar ApkChecker.jar 即可运行。

安装

运行

$ java -jar matrix-apk-canary-2.0.1.jar --config config.json

配置文件

💡 配置文件可参考下面的示例,注意以下几个问题:

  1. "--apk":"./sample.apk" 表示需要分析的 apk 文件
  2. "--mappingTxt":"./mapping.txt" 表示打包输出的 mapping 文件
  3. "--resMappingTxt":"./symbols.txt" 表示资源 mapping 文件 (R 文件)
  4. "--output":"./outputs/apk-checker-result" 表示输出报表的路径;需要注意 outputs/ 文件夹一定要先创建好!!!否则无法导出报表;
  5. "--toolnm" 需要替换成你的本机路径;
  6. 更多配置,可以参考 Matrix 官方文档
  7. 通过 ci 平台打包的产物;如下所示👇
    1. mappingTxt 可以从 mapping 获取
    2. resMappingTxt 可以从 symbols 获取
{
  "--apk":"./sample.apk",
  "--mappingTxt":"./mapping.txt",
  "--resMappingTxt":"./symbols.txt",
  "--output":"./outputs/apk-checker-result",
  "--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":"10",
      "--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":"-checkMultiSTL",
      "--toolnm":"/Users/plucky/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm"
    },
    {
      "name":"-unusedResources",
      "--rTxt":"./symbols.txt",
      "--ignoreResources"
      :["R.raw.*",
        "R.style.*",
        "R.attr.*",
        "R.id.*",
        "R.string.ignore_*"
      ]
    },
    {
      "name":"-unusedAssets",
      "--ignoreAssets":["*.so" ]
    },
    {
      "name":"-unstrippedSo",
      "--toolnm":"/Users/plucky/Library/Android/sdk/ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-nm"
    }
  ]
}

作者:Plucky
出处:https://www.1991.wiki/topics/6
版权:本作品采用「署名 - 非商业性使用 - 相同方式共享 4.0 国际」许可协议进行许可,如您转载必须以链接形式注明原文地址。

plucky 将本帖设为了精华贴 10月24日 15:24
plucky 将本帖设为了精华贴 10月24日 15:24
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册