Android flutter项目 启动优化实战(一)利用benchmark分析项目

[复制链接]
发表于 2025-10-2 13:22:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次

配景形貌

启动时间是用户对应用的第一印象,较慢的加载会对用户的留存和互动造成负面影响
在刚上线的Android原生&flutter的B端项目中:

  • 进步启动速率能进步团体流程的服从
  • 进步初次运行速率能进步应用推广的初体验结果
标题形貌

项目刚上线没多久、现在存在冷启动过程存在多少标题亟需优化 比如flutter hotrestart 不可用 、启动500ms黑屏标题
初期项目标启动流程


办理方案及工具

从结果上分为两大类,此中之一是以SplashScreen为代表的体验优化方向, 另一个是懒加载、淘汰包体积等的功能性优化方向。在现实开发中,我们可以利用AppUploader如许的iOS开发助手工具来辅助分析应用的启动性能指标。
没有专门大块的时间去搞优化 于是分优先级、分阶段实现
检测工具

Jetpack Macrobenchmark库
Macrobenchmark

  • 在项目中New Module出来

  • 将设置改为你所必要的
  1. @RunWith(AndroidJUnit4::class)
  2. class ExampleStartupBenchmark {
  3.     @get:Rule
  4.     val benchmarkRule = MacrobenchmarkRule()
  5.     @Test
  6.     fun startup() = benchmarkRule.measureRepeated(
  7.         packageName = "com.test.app",
  8.         metrics = listOf(StartupTimingMetric()),
  9.         iterations = 5,
  10.         startupMode = StartupMode.COLD
  11.     ) {
  12.         pressHome()
  13.         startActivityAndWait()
  14.     }
  15. }
复制代码

  • 更改设置及运行
    app部分为benchmark,把其他Module都改成release后运行


优化前(0.0V)标题分析


天生结果

运行benchmark后天生结果:


Time to initial display & Time to full display

名称形貌用处初始表现时间启动流程和完成在屏幕上绘制相应活动之间颠末的时间量让用户以为不卡完全表现时间丈量应用步伐启动和全部资源和视图条理结构的完备表现之间颠末的时间让用户正常利用分析

此中max时间很长、总体时间也不短 中位数靠近最小值
作为初期项目 Time to initial display & Time to full display我全都要办理

接下来我们看看到底什么地方用了这么长时间 点击进入Traces:Iteration详细如下图所示


可以看到bindApplication时间很长等标题

确认优化点

综上并团结现实表现的标题有几个大的优化向:

  • 紧缩总时长(办理黑屏标题、懒启动、优化流程)
  • 优化启动项(利用App Startup)
  • 提升用户体验
对于iOS开发者,可以利用AppUploader这类工具来监测应用的启动性能,它提供了详细的启动时间分析陈诉,资助开发者快速定位性能瓶颈。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表