通过安装包重排布优化 Android 端启动性能

1. 前言

本章节我们将围绕《支付宝 App 构建优化解析》另启新系列,细分拆解客户端在“代码管理”、“证书管理”、“版本管理”、“构建打包”等维度的具体实现方案展开讨论,带领大家进一步了解支付宝在 App 构建模块下的持续优化。

本节将主要记录通过对支付宝 Android Apk 文件的重新布局,来改善 IO 性能的过程。

2. 背景

支付宝 App 在 Android 平台上,由于大量业务快速上线,Android 长尾机型等原因,造成启动阶段及部分核心链路上,性能体验不理想,进而影响用户的使用的感受。
从纯业务角度,可以通过优化 UI 布局,优化代码结构,优化 bundle 加载等方式,对性能体验有所改善。作为工程技术团队,按照传统思维来看,似乎无法对性能优化做多少贡献。经过一些方案调研后,我们尝试通过对编译产物的优化,干预构建流程,以提升 App 性能。

3. 原理

布局前后,Apk 中实际的文件并没有本质改变,只有位置发生了变化。那么为什么这样的调整会有性能造成影响?这个原理要追溯到 Linux 的文件系统机制。

如下图所示,Linux 底层文件系统中 VFS 上次 App 进程之间,存在一层 pagecache,pagecache 由内存中的物理 page 组成,其内容对应磁盘上的 block。Pagecache 的大小是动态变化的,可以扩大,也可以在内存不足时缩小。Cache 缓存的存储设备被称为后备存储(backing store),一个 page 通常包含多个 block,这些 block 不一定是连续的。

011c084a6b328a32fbb2ce5135b811e7a2826acc

猜你喜欢

转载自my.oschina.net/u/3611008/blog/2964022