Status Update
Comments
ys...@google.com <ys...@google.com> #2
Also crashes in R8 version 8.5.35, 8.6.17, 8.7.2-dev
ra...@google.com <ra...@google.com> #3
You cannot apply keep rules for classes synthesized by R8, but if you keep the implemented interfaces, the merging should not happen.
That said, checking the implementing class of a lambda might not be a good idea. The specification for java.lang.invoke.LambdaMetafactory
Capture may involve allocation of a new function object, or may return a suitable existing function object. The identity of a function object produced by capture is unpredictable, and therefore identity-sensitive operations (such as reference equality, object locking, and System.identityHashCode()) may produce different results in different implementations, or even upon different invocations in the same implementation.
If I understand this correctly the only guarantee is that the function object implements the interface(s) specified.
Description
When running a macrobenchmark from command line (via AGP), the output is just "BUILD SUCCESSFUL". Ideally the output would be somewhat similar to what we see in Android Studio (especially since AS mostly displays a giant string anyway).
It'd also be really nice if the plugin could dump the location of additional test outputs so we could look at the traces with Perfetto.
Cherry on top would be for this to be somewhat pluggable / customizable, so that we can add a post processing step (e.g. validate or upload results, though this can also be done at runtime on device)