Issue
I configured a benchmark module and created a baseline profile for the project and saved it in the app according to the instructions here rel="noreferrer">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?
Solution
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.
Answered By - mlykotom
Answer Checked By - Katrina (JavaFixing Volunteer)