添加 Instrumentation 参数

使用以下 Instrumentation 参数配置库的行为。您可以将其添加到 Gradle 配置中,也可以在从命令行运行 Instrumentation 时直接应用它们。要为所有 Android Studio 和命令行测试运行设置这些参数,请将其添加到 testInstrumentationRunnerArguments

android {
    defaultConfig {
        // ...
        testInstrumentationRunnerArguments["androidx.benchmark.dryRunMode.enable"] = "true"
    }
}

您也可以在从 Android Studio 运行基准测试时设置 Instrumentation 参数。要更改参数,请执行以下操作:

  1. 点击编辑,然后点击配置来编辑运行配置。
    edit run configuration
    图 1. 编辑运行配置。
  2. 点击 更多,然后点击Instrumentation 参数来编辑 Instrumentation 参数。
    edit the instrumentation arguments
    图 2. 编辑 Instrumentation 参数。
  3. 点击Instrumentation Extra Params 下的 添加来添加所需的 Instrumentation 参数。
    add required instrumentation argument
    图 3. 添加所需的 Instrumentation 参数。

如果直接从命令行调用,请使用 -P android.testInstrumentationRunnerArguments.[参数名称]

./gradlew :benchmark:connectedAndroidTest -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile

androidx.benchmark.compilation.enabled

允许您在基准测试的每次迭代之间禁用编译。默认情况下,目标应用会在每次基准测试之间重新安装和重新编译,以遵守传递给 measureRepeatedCompilationMode。禁用此功能可以让您跳过重新安装和编译,例如,如果您想在运行测试套件之前完全编译一次目标应用,然后对该完全编译的目标应用运行所有基准测试。

  • 参数类型:布尔值
  • 默认为: true

androidx.benchmark.dryRunMode.enable

允许您在单个循环中运行基准测试,以验证其是否正常工作。您可以将其与常规测试一起用作验证的一部分。

  • 参数类型:布尔值
  • 默认为: false

androidx.benchmark.enabledRules

允许将运行过滤到只有一种类型的测试:基线配置文件生成或宏基准测试。也支持逗号分隔的列表。

  • 参数类型:字符串
  • 可用选项
    • 宏基准测试
    • BaselineProfile
  • 默认为:未指定

androidx.benchmark.junit4.SideEffectRunListener

如果在基准测试运行期间执行了不相关的后台工作,您可能会得到不一致的基准测试结果。

要禁用基准测试期间的后台工作,请将listener 检测参数类型设置为androidx.benchmark.junit4.SideEffectRunListener

  • 参数类型:字符串
  • 可用选项
    • androidx.benchmark.junit4.SideEffectRunListener
  • 默认为:未指定

androidx.benchmark.fullTracing.enable

启用androidx.tracing.perfetto跟踪点,例如Jetpack Compose组合跟踪。

您需要设置项目才能从基准测试中捕获组合跟踪。有关更多信息,请参阅使用Jetpack Macrobenchmark捕获跟踪

  • 参数类型:布尔值
  • 默认为false

androidx.benchmark.profiling.mode

允许在运行基准测试时捕获跟踪文件。可用选项与微基准库的选项相同——有关更多信息,请参阅分析微基准测试中的说明。

  • 参数类型:字符串
  • 可用选项
    • MethodTracing
    • StackSampling
    • None
  • 默认为:None

androidx.benchmark.startupProfiles.enable

允许您在基准测试期间禁用启动配置文件的生成。

  • 参数类型:布尔值
  • 默认为: true

androidx.benchmark.suppressErrors

接受逗号分隔的错误列表,将其转换为警告。

  • 参数类型:字符串列表
  • 可用选项

    • DEBUGGABLE

      DEBUGGABLE错误表示目标包在其清单中以debuggable=true运行,这会大幅降低运行时性能以支持调试功能。为避免此错误,请使用debuggable=false运行基准测试。可调试参数会影响执行速度,这意味着基准测试改进可能无法延续到实际用户的体验,或者可能会降低发行版性能。

    • LOW-BATTERY

      电池电量低时,设备通常会降低性能以节省剩余电量,例如禁用大核心。即使设备已插入电源,也会发生这种情况。只有在您故意以降低的性能分析应用程序时,才应抑制此错误。

    • EMULATOR

      EMULATOR错误告诉您基准测试正在模拟器上运行,这不能代表真实用户设备。模拟器基准测试改进可能无法延续到实际用户的体验,或者可能会降低真实设备的性能。您应该改用物理设备进行基准测试。应极其谨慎地抑制此错误。

    • NOT-PROFILEABLE

      目标包$packageName正在运行,没有<profileable shell=true>。在Android 10和11上,需要Profileable才能让Macrobenchmark从目标进程捕获详细的跟踪信息,例如应用程序或库中定义的系统跟踪部分。应极其谨慎地抑制此错误。

    • METHOD-TRACING-ENABLED

      正在基准测试的应用程序的Macrobenchmark运行启用了方法跟踪。这会导致虚拟机运行速度比平时慢,因此仅从相对角度考虑跟踪文件中的指标——例如,比较第一次运行与第二次运行的速度。如果您比较具有不同方法跟踪选项的构建的基准测试,则抑制此错误可能会导致结果不准确。

  • 默认为:空列表

additionalTestOutputDir

配置在设备上保存JSON基准报告和性能分析结果的位置。

  • 参数类型:路径字符串
  • 默认为:测试APK的外部目录