跳转至

Android 性能优化技术月报 | 2023 年 9 月

每个月都会有一些 Android 性能优化相关的优质内容发布,然而,碎片化阅读使得这些知识难以形成完整体系,且容易被遗忘。为解决这些问题,我决定尝试使用技术月报的形式,总结我在最近一个月内查阅的 Android 性能优化相关的优质内容。

月报的主要内容包括:整理展示我在最近一个月所查阅的 Android 性能优化领域的最新技术动态、精选博客,精选视频等内容。

精选博客

Android 增量构建的科技与狠活

对于 Android 应用,尤其是大型应用而言,构建耗时是令人头疼的一件事。动辄几分钟甚至十几分钟的时间更是令大部分开发人员苦不堪言。而在实际开发过程中面对最多的就是本地的增量编译,虽然官方对增量编译有做处理,但在具体项目,尤其是中大型项目中,效果其实都不太理想。

本文主要介绍了网易云音乐在增量构建方面做的一系列优化:

  • 通过开关配置在测试包不打开不必要的 Transform
  • Trasnform 增量构建支持与 Hook
  • dexMerge 流程分析
  • dexMerge 如何支持增量

通过以上优化网易云音乐原来耗时几十秒到几分钟的 Transform 基本都能被压缩到1-2 s以内,dexMerge 耗时由 35-40 s 缩减到3 s 左右。

可以看出对于大型应用进行,Transform 优化与 dexMerge 优化还是有很大收益的。

包体积:Layout 二进制文件裁剪优化|得物技术

本文主要介绍了得物通过 XML 二进制文件裁剪实现包体积优化的一些经验,主要包括以下内容:

  1. XML 解析流程
  2. XML 二进制文件格式
  3. XML 解析过程举例
  4. 裁剪优化实现

得物通过裁剪 Layout 二进制文件中的命名空间,属性字符串名称,可以获得 2.2 M 左右的优化效果,对于大型 APP 来说有一定收益。

崩溃捕获设计实践方案

Android 的稳定性是 Android 性能的一个重要指标,它也是App质量构建体系中最基本和最关键的一环。

本文主要介绍了如何从 0 到 1 设计一个崩溃捕获的框架,主要包括以下内容:

  • 整体介绍概述
  • APP 崩溃流程
  • 崩溃处理入口
  • 崩溃监听思路

总得来说,非常全面的一份 Android 崩溃捕获设计实践方案,同时也有开源代码,非常适合用于学习崩溃捕获的原理

高德Android高性能高稳定性代码覆盖率技术实践

本文主要介绍了高德地图如何实现生产环境代码覆盖率的高性能采集,通过线上代码覆盖率数据的采集,不仅能为我们下线旧代码提供依据,同时还能反映某个功能的使用热度,可以为资源分配、调度决策等提供依据,是软件开发中一项不可或缺的重要工具。

相比业界其它方案,高德方案少Hack,实现简单,兼顾稳定性和性能,同时也不会侵入打包流程,带来包体积影响等,值得借鉴。

如何魔改 Retrofit

本文主要介绍,网易云音乐冷启动优化的过程中发现,Retrofit loadServiceMethod 方法内部加了锁,锁+不可避免的耗时,引发的必然结果是:在冷启动过程中,通过 Retrofit 发起的网络请求,会部分劣化成一个串行过程。

发现了问题之后,网易云音乐通过以下方式优化 Retrofit 的性能:

  • 使用 Moshi 原生就支持的 @JsonClass 注解
  • 修改 Retrofit 加锁逻辑
  • Retrofit 支持缓存和预加载的封装

精选视频

使用 benchmark 优化 app 性能

Improving app performance with benchmarking (Google I/O'19)

要做性能优化,benchmark 非常重要,本视频介绍了 Jetpack benchmark 库的使用以及其背后的原理


最后更新: November 17, 2024