0%

APP 包大小统计方案

APP 包大小统计方案

管理学大师彼得德鲁克曾经说过“你如果无法度量它,就无法管理它” (It you can’t measure it, you can’t manage it) 。 要想有效管理,就难以绕开度量的问题。我们如果想优化 app 的大小第一步就是准确有效得测量统计它。我们将整理 App 统计的有效方案。

需求背景

随着版本的迭代,App 包大小与日递增,已经接近 App Store 限制的200MB 流量下载阈值。虽说伴随着 App 功能的增加,包大小的增加或许不可避免,但是现在没有一套完整的系统能监控到安装包到底在哪些功能点、模块上增加的具体数据,因而无法着重去优化某些模块的大小,也无法去判断某个功能点是不是值得占用这么多包体积。

产品目标

根本的目标是需要明确知道每个版本增加、减少的包大小到底在哪些模块中,评估其增减量相对于其自身价值是否正常。其次还有助于开发养成不乱复制代码、不瞎分模块的好习惯。

统计 arm64

  • 可视化展示某个包中各个可执行文件、资源文件的大小
  • 可视化展示任意两个包的内容差异
  • 相邻两个版本增长、减少 TOP 10
  • 包大小日报(develop、最新release)
  • 每个模块登记相关负责人(模块 / 公用)
    • 主工程文件监控 (是否允许增加新文件,新增文件必须走登记流程)
    • Module中文件监控

用户想知道的

  • 想知道某个分支包大小波动较大的原因
  • 想知道每个版本相对于上个版本的 release 体积变化
  • 每个模块在每个包中(不区分branch)的体积变化
  • 资源文件在每个包中(不区分branch)的体积变化
  • 单个文件/模块被调用的地方

功能

1.png

技术方案

2.png

LinkMap 分析

打包之后相应架构的 LinkMap 文件复制到打包目录中,待包大小系统读取分析。
包大小系统收到打包成功通知后,拷贝 LinkMap 文件到本地服务器进行分析,分析结果按照 Moudle 为第一层,其子文件为第二层进行存储,方便调取,比对。

Assets 分析

Assets 进行切割(分离2X,3X)之后计算实际大小,使用 iOS 13,iPhone11标准。

Bundle 资源分析

因为苹果不会对bundle资源进行“优化”,所以直接进行大小统计

3.png