作者 / Android 开发者关系工程师 Florina Muntenescu
启动时间的重要性
启动时间
https://support.google.com/googleplay/android-developer/answer/9844486
回顾
配置文件的工作原理
JIT
https://source.android.google.cn/devices/tech/dalvik/jit-compiler
ART
https://source.android.google.cn/devices/tech/dalvik/configure?hl=zh_cn
存在的问题
解决方案
HSPLandroidx/compose/runtime/ComposerImpl;->updateValue(Ljava/lang/Object;)V
HSPLandroidx/compose/runtime/ComposerImpl;->updatedNodeCount(I)I
HLandroidx/compose/runtime/ComposerImpl;->validateNodeExpected()V
PLandroidx/compose/runtime/CompositionImpl;->applyChanges()V
HLandroidx/compose/runtime/ComposerKt;->findLocation(Ljava/util/List;I)I
基准配置文件
https://developer.android.google.cn/studio/profile/baselineprofiles
Android Gradle 插件
https://developer.android.google.cn/studio/releases/gradle-plugin
在本地开发和评估
https://developer.android.google.cn/studio/profile/baselineprofiles#creating-profile-rules
影响
2021 年初,Google 地图的发布周期从两周改为一周。更频繁的更新意味着更频繁地舍弃本地预编译,以及更多用户在没有 Play Cloud 配置文件的情况下,遇到启动缓慢的情况。通过使用基准配置文件,Google 地图将平均启动时间缩短了 30%,搜索速度相应增长了 2.4%,对于这样一个成熟的应用来说,这是巨大的性能改进。
库开发者
库中的代码与应用中的代码类似,默认都不是完全编译,如果它在启动的关键路径中发挥重要作用,则可能存在问题。
Jetpack Compose 是一个不属于 Android 系统映像的界面库,因此与大多数 Android 视图工具包代码不同,它在安装时并未完全编译。这导致了性能问题,尤其是在应用前几次冷启动时。
Jetpack Compose
https://developer.android.google.cn/jetpack/compose
为解决这一问题,Compose 使用了配置文件安装程序。该程序附带了基准配置文件规则,可以缩短 Compose 应用的启动时间并减少卡顿。
配置文件安装程序
https://developer.android.google.cn/jetpack/compose/ergonomics#profile-inst
AndroidX
https://developer.android.google.cn/jetpack/androidx/
附带的配置文件规则
https://github.com/androidx/constraintlayout/pull/423
如何使用基准配置文件
创建自定义基准配置文件
https://developer.android.google.cn/studio/profile/baselineprofiles#creating-profile-rules
Jetpack
https://cs.android.com/search?q=baseline-prof.txt&ss=androidx%2Fplatform%2Fframeworks%2Fsupport
构建应用的补充部分
https://developer.android.google.cn/studio/profile/baselineprofiles#creating-profile-rules
推荐阅读