Baseline profiles aren't supported on this device version

2.7k Views Asked by At

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

There are 2 best solutions below

0
On BEST ANSWER

Update October 2022

Use androidx.profileinstaller version 1.3.0-alpha01 or later that fixes the problem (or 1.2.1 when released).

Original Answer

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.

1
On

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"