Status Update
Comments
cc...@google.com <cc...@google.com> #2
I had created the same issue with wrong component earlier
cs...@supercharge.io <cs...@supercharge.io> #3
I noticed in the sample project you're using an emulator with api30.
We found a bug that is being fixed related to api 30 emulator and baseline profile generation.
Could you please try:
- Updating the baseline profile gradle plugin version (alpha14 is the latest as we speak)
- Change api version to 33 (or anything > 30)
Let me know if this works!
Thanks!
na...@google.com <na...@google.com> #5
Thanks for suggestions and I could generate profiles in few scenarios. Few observations:
-
The issue seems to be specific to ARM devices running in FTL, regardless of the API version. When testing the application on a physical device (from FTL) with API 33, the profiles were successfully generated. This suggests that the problem lies in the ARM device profiles not being located where the extraction process expects them to be. It's worth investigating whether this issue originates from the plugin itself and whether it requires attention and resolution.
-
The current behavior of the
BaselineProfileConsumerExtension
does not save the optionssaveInSrc
andbaselineProfileOutputDir
in the designated locations. This inconsistency exists when running in FTL managed device. It would be beneficial to enhance the plugin's functionality to ensure consistent behavior across different environments. This improvement would ensure that the specified options for saving profiles are reliably honored, regardless of the testing environment being used.
Description
Component used: Macrobenchmark
Version used: 1.2.0-alpha06
Devices/Android versions reproduced on: Pixel 6 Android 13
When having a benchmark with multiple
@Test
functions, it seems that the finalbenchmarkData.json
file only contains one benchmark result in thebenchmarks
JSON array.This can be reproduced with the code taken from the Baseline profile documentation .
Digging in to the benchmark sources, this should work on a first look, because ResultWriter is global
object
, and collects all the previous benchmark results in a list. However this is not working, because each@Test
function seems to be running in a different process, therefore the previous result is lost from theResultWriter
.