Fixed
Status Update
Comments
lo...@gmail.com <lo...@gmail.com> #2
Retraced stack trace:
Caused by: java.lang.UnsupportedOperationException: Operation is not supported for read-only collection
at com.android.tools.r8.jetbrains.kotlin.collections.EmptyList.removeAll(Collections.kt)
at com.android.tools.r8.resourceshrinker.r8integration.LegacyResourceShrinker.run(LegacyResourceShrinker.java:228)
at com.android.tools.r8.R8.shrinkResources(R8.java:991)
at com.android.tools.r8.R8.runInternal(R8.java:894)
at com.android.tools.r8.R8.runInternal(R8.java:259)
at com.android.tools.r8.R8.lambda$runForTesting$1(R8.java:243)
at com.android.tools.r8.internal.Nu.a(R8_8.9.27_3afcc9fea5cc5cd06373667ec09d5fe106db8a4a77576689534e667542385a93:28
ma...@google.com <ma...@google.com>
ap...@google.com <ap...@google.com> #3
This is happening when there are no unused resources at all and we have duplicated resources between the feature and base (or different features)
Reproduction here:
Fix here:
For the reporter to work around this:
- Disable resource shrinking in this case, it will have no effect since there are no unused resources for this build
- Use legacy AGP embedded shrinker - set android.r8.integratedResourceShrinking false in your settings
- Manually update to a new R8 version (I will post a follow up when this is on our release branch)
na...@google.com <na...@google.com> #4
Thanks!
Description
Component used: Jetpack macrobenchmark Version used: 1.4.0-alpha07 Devices/Android versions reproduced on: Pixel 4 XL Android 14 aosp
Sometimes there are resynced frames when frame is prepared for too long: "Choreographer#doFrame - resynced to 8643135 in 21,7ms" and there is logic added here to filter these out in FrameTimingQuery:
But there's a check later that checks if all slices have frameId:
Frame id is number that comes after "Choreographer#doFrame" And it checks for frameId in unfiltered slices where
Choreographer#doFrame - resynced to 8643135 in 21,7ms
is present. It tries to convert"-"
to id, fails to do so and returns null.It results in test failing because of that check.
Should be easy fix - just filter first and check for frameIds presence in filtered traces