启动配置文件是基准配置文件的子集。构建系统使用启动配置文件通过改进 APK 的 DEX 文件中代码的布局来进一步优化其包含的类和方法。使用启动配置文件,您的应用启动速度通常比单独使用基准配置文件快 15% 到 30%。

要求
我们建议将启动配置文件与以下工具配合使用
- Jetpack Macrobenchmark 1.2.0 或更高版本
- Android Gradle Plugin 8.2 或更高版本
- Android Studio Iguana 或更高版本
此外,您的应用中还需要以下设置
- R8 已启用。对于您的发布版本,请设置
isMinifyEnabled = true
。 - DEX 布局优化已启用。在应用模块构建文件的
baselineProfile {}
块中,设置dexLayoutOptimization = true
。
创建启动配置文件
当您使用默认的基准配置文件生成器模板时,Android Studio 会在生成基准配置文件的同时创建一个启动配置文件。
创建和生成启动配置文件的常规步骤与创建基准配置文件的步骤相同。
创建启动配置文件的默认方式是使用 Android Studio 内置的基准配置文件生成器模块模板。这包括构成基本启动配置文件的启动互动。要使用更多关键用户历程 (CUJ) 来扩充此启动配置文件,请将您的应用启动 CUJ 添加到 rule
块中,并将 includeInStartupProfile
设置为 true
。对于简单的应用,启动应用的 MainActivity
可能就足够了。对于更复杂的应用,请考虑添加应用最常见的入口点,例如从主屏幕启动应用或启动到深层链接。
以下代码段展示了一个基准配置文件生成器(默认为 BaselineProfileGenerator.kt
文件),它包含了从主屏幕启动应用以及启动到深层链接的操作。该深层链接直接指向应用的动态消息,而不是应用的主屏幕。
@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {
@get:Rule
val rule = BaselineProfileRule()
@Test
fun generate() {
rule.collect(
packageName = "com.example.app",
includeInStartupProfile = true
) {
// Launch directly into the NEWS_FEED.
startActivityAndWait(Intent().apply {
setPackage(packageName)
setAction("com.example.app.NEWS_FEED")
})
}
}
}
运行为应用生成基准配置文件配置,并在 src/<variant>/generated/baselineProfiles/startup-prof.txt
找到启动配置文件规则。
创建启动配置文件的注意事项
启动配置文件的类和方法的输出受限于第一个 classes.dex 文件的大小。这意味着并非所有基准配置文件历程都应同时是启动配置文件历程。
在创建启动配置文件时,要决定覆盖哪些用户历程,请考虑大多数用户从何处启动应用程序。通常是从启动器启动,并在登录后。这也是最基本的基准配置文件历程。
涵盖第一个用例后,请遵循应用启动的用户漏斗。在许多情况下,应用启动漏斗遵循此列表
- 主启动器 activity
- 触发应用启动的通知
- 可选启动器 activity
从列表顶部开始,并在 classes.dex 文件填满之前停止。之后要覆盖更多历程,请将代码移出启动路径并添加更多历程。要将代码移出启动路径,请在应用启动期间检查 Perfetto 跟踪,查找长时间运行的操作。您还可以使用宏基准测试,并启用方法跟踪,以便自动且完整地查看应用启动期间的方法调用。
推荐
- 注意:当 JavaScript 关闭时,会显示链接文本
- 创建基准配置文件 {:#creating-profile-rules}
- 基准配置文件 {:#baseline-profiles}
- 编写 Microbenchmark