基准配置文件与启动配置文件之间的区别

本文档介绍了基准配置文件和启动配置文件之间的区别。

您可以使用基准配置文件 Gradle 插件自动捕获由 BaselineProfileRule 测试生成的人类可读的基准配置文件。构建应用时,Android Gradle 插件 (AGP) 会将这些人类可读的配置文件规则编译为二进制格式,并将其打包为 Android 软件包套件 (APK) 或 Android App Bundle (AAB) 中的 baseline.prof,以便 Android 运行时 (ART) 可以有效地用于设备端编译,前提是二进制配置文件的大小小于 1.5 MB。

生成的配置文件通常命名为 startup-prof.txtbaseline-prof.txt

基准配置文件 (Baseline Profile)

基准配置文件包含一组全面的规则,ART 可使用这些规则预先编译常用的代码路径,从而优化应用启动、减少互动卡顿并提高整体运行时性能。

基准配置文件通常是启动配置文件中规则的超集。此文件包含应用启动优化所需的所有规则(通过 baselineProfile Gradle 任务生成),以及其他关键用户历程的额外配置文件。例如,滚动和浏览不同屏幕。

无论 includeInStartupProfile 配置字段的值是多少,系统都会生成这些非启动规则。如需了解详情,请参阅基准配置文件概览

启动配置文件

启动配置文件包含专门针对应用启动路径优化的规则。在编译期间,D8 和 R8 会使用 Java 字节码来生成 Dalvik 可执行文件 (DEX)。D8 和 R8 都使用启动配置文件来优化 DEX 布局,方法是将关键的启动代码放在主 .dex 文件中,以加快类加载速度。为了获得最显著的性能提升,启动代码必须包含在此主 .dex 文件中。如果启动代码的累积大小过大,则会溢出到后续 DEX 文件中,而这些 DEX 文件通常填充了非必需的类和方法,从而减慢启动速度。

虽然启动配置文件提供了 DEX 布局优化所需的元数据,但 R8 代码优化可以非常有效地协助完成此过程。通过移除未使用的代码和缩小字节码,R8 可减少启动逻辑的总占用空间。这种减少提高了关键代码保留在主 .dex 文件中的可能性,从而防止溢出并确保在更广泛的 Android 版本中更高效地执行代码。一般情况下,您应仅在对应用的初始显示至关重要的测试场景中将 includeInStartupProfile 设置为 true

如需了解详情,请参阅启动配置文件概览