Baseline profiles aren't supported on this device version

Viewed 708

I configured a benchmark module and created a baseline profile for the project and saved it in the app according to the instructions here https://developer.android.com/studio/profile/baselineprofiles.

I've also added the benchmark:

@RunWith(AndroidJUnit4::class)
class BaselineProfileBenchmark {
    @get:Rule
    val benchmarkRule = MacrobenchmarkRule()

    @Test
    fun startupNoCompilation() {
        startup(CompilationMode.None())
    }

    @Test
    fun startupBaselineProfile() {
        startup(
            CompilationMode.Partial(
                baselineProfileMode = BaselineProfileMode.Require
            )
        )
    }

    private fun startup(compilationMode: CompilationMode) {
        benchmarkRule.measureRepeated(
            packageName = "com.example.app",
            metrics = listOf(StartupTimingMetric()),
            iterations = 10,
            startupMode = StartupMode.COLD,
            compilationMode = compilationMode
        ) {
            pressHome()
            startActivityAndWait()
        }
    }
}

startupBaselineProfile() test fails with an exception "Baseline profiles aren't supported on this device version". I tried to run it on different Pixel and Samsung devices with the latest Android version, but the same exception is thrown everywhere.

Do these baseline profiles wok at all?

2 Answers

Currently baseline profiles has some known issues:

  • can't benchmark them on Android 12L (Api 32) - b/228222110
  • you need latest alpha version of profileinstaller, which is 1.2.0-alpha02

Note, that the profileinstaller may be added with a library (e.g. jetpack compose) so make sure you add it to your dependencies to override the version.

Make sure to add the profileinstaller dependency to the target module (usually it's you app module)

implementation "androidx.profileinstaller:profileinstaller:1.2.0-beta01"
Related