Android 性能优化技术月报 | 2023 年 11 月
每个月都会有一些 Android 性能优化相关的优质内容发布,然而,碎片化阅读使得这些知识难以形成完整体系,且容易被遗忘。为解决这些问题,我决定尝试使用技术月报的形式,总结我在最近一个月内查阅的 Android 性能优化相关的优质内容。
月报的主要内容包括:整理展示我在最近一个月所查阅的 Android 性能优化领域的最新技术动态、精选博客,精选视频等内容。
精选博客
抖音消息调度优化启动速度方案实践
抖音的启动优化过程中发现一些被 post 在这些生命周期之间的主线程耗时消息也会对启动速度造成影响。比如 Application 和 Activity 之间、Activity 和 UI 渲染之间。这些主线程消息会导致我们后续的生命周期被延后执行,影响启动速度,我们需要对它们进行优化。
- 通过在关键流程,如启动页面、页面首帧绘制阶段,优化相应消息的顺序, 可以提高相应流程的速度,避免因为其他消息阻塞了关键流程。
- 消息顺序的修改只能优化局部问题,从整体上看,耗时问题并没有解决,只是将问题延后了。
- 消息耗时的监控及治理是解决根本问题的方式
Gradle 速度优化原理解析与性能对比
An In-depth Look at Gradle's Approach to Faster Compilation
本文介绍了 Gradle 是如何通过编译避免优化编译速度的,同时比较了 Bazel 和 Gradle 在处理 ABI 变化和非 ABI 变化的两种情况下的构建时间。结果显示,Gradle 在处理 ABI 变化的情况下比 Bazel 快得多,因为它不需要生成新的头 JAR。Gradle 在处理非ABI变化的情况下也比 Bazel 快,这得益于 Gradle 的一些最新优化,如配置缓存(Gradle 8.1中稳定)和持久化编译器守护进程(Gradle 8.3中默认启用)
如何科学的进行Android包体积优化
本文主要介绍了脉脉 App 将包体积从 168 M 优化到 49 M 的过程,比较系统全面,主要包括以下几个方面:
- 评估优化需求:通过对标竞品和业内人气 App,判断是否需要进行优化和优化的目标。
- 包体积优化基本思想:抓住各个环节,系统化方案先行,明确风险收益比和成本收益比,明确指标和监控防劣化体系,把包体积这个指标刻在脑子里。
- 自家 App 包体积一览:分析 APK 的结构和各个部分的大小,找出优化的重点和方向。
- 优化方案草案:根据 APK 的现状,调研业内常规和非常规的优化手段,制定可实现、低风险、高收益的方案。
- 基于风险收益比和成本收益比敲定最终实现方案:对每个方案进行详细的分析,考虑预期效果、成本和风险,选择最合适的方案进行实施。
- 确定优化效果:通过对比图展示优化前后的包体积变化,量化优化的收益。
- 总结:总结做得好的方面和需要改进的方面,给出一些反思和建议。
- 展望:展望未来的优化方向和计划,给出一些更极致的优化方案。
精选视频
抖音创作工具 Android 架构思考与实践
抖音创作工具 Android 架构思考与实践,可以看一下大型 App 是怎么做架构优化的
一款大型 APP 是如何进行性能优化的?
做客户端开发都基本都做过性能优化,比如提升自己所负责的业务的速度或流畅性,优化内存占用等等,但是大部分开发者所做的性能优化可能都是针对中小型 APP 的,大型 APP 的性能优化经验并不会太多。本视频主要介绍了大型 app 相比于中小型 app 在做性能优化时的异同点,以及大型 app 性能优化的思路