Status Update
Comments
uc...@google.com <uc...@google.com>
sg...@google.com <sg...@google.com>
sg...@google.com <sg...@google.com> #2
Thank you for the report. The shrinking of the code in desugar_jdk_libs:1.0.5
is a bit special, as the keep rules are generated during compilation for the app and test to only keep the parts that the app and test actually use. As this issue is only seen with minifyEnabled true
it could be these keep rules which are inadequate, but it could also be some interplay between the app and the test.
Do you have a reproduction that you can share, or can you otherwise explain which APIs from desugar_jdk_libs:1.0.5
you use in the app and test respectively, and how the test interact with the app?
Also, would it be possible for you to extract more information on the test failures from the device logcat
for us to get more information on the failure?
Regarding the generated keep rules they are found in the files app/build/intermediates/desugar_lib_project_keep_rules/debug/output
and app/build/intermediates/desugar_lib_project_keep_rules/debugAndroidTest/output
(replace app
with MyApp
in your case).
From the info above the test are running on "Pixel 3 - 10" is that a device/emulator running Android 10 (API level 29)?
The warnings from the compilation are unfortunate, but should be benign.
da...@gmail.com <da...@gmail.com> #3
To be clear, I haven't started taking advantage of the new desugared API. I have merely added dependency to the desugaring lib, what casued the problems. I use JetifyTransform in case that plays a role.
With minifyenabled true the app starts from Android Studio, when starting through instrumented tests it crashes. I have shrunk my instrumented test, so that even minimal test crashes app:
./gradlew --refresh-dependencies --stacktrace :MyApp:connectedMyFlavourAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=MyAppPackage.MyTestSuite
@RunWith(Suite.class)
@Suite.SuiteClasses({SampleTest.class})
public class MyTestsSuite {}
@RunWith(AndroidJUnit4.class)
@OnlyLiveTest
public class SampleTest {
@Test
public void testXXX_wrongPassword() throws LoginException, RequestException {
some code testing logging in into my app
}
}
The LogCat for above instrumented test run shows following:
2020-06-05 07:55:15.179 20345-20345/my.app.debug E/AndroidRuntime: FATAL EXCEPTION: main
Process: my.app.debug, PID: 20345
java.lang.InstantiationError: j$.util.o
at j$.util.DesugarCollections.synchronizedMap(:252)
at my.app.application.account.HostAccountManager.<init>(HostAccountManager.java:43)
at my.app.application.modules.ModulesManager.<init>(ModulesManager.java:25)
at my.app.application.modules.ModulesManager_Factory.get(ModulesManager_Factory.java:26)
at my.app.application.modules.ModulesManager_Factory.get(ModulesManager_Factory.java:9)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at my.app.application.injection.DaggerLiveHostComponent.injectSmartApplication(DaggerLiveHostComponent.java:359)
at my.app.application.injection.DaggerLiveHostComponent.inject(DaggerLiveHostComponent.java:286)
at my.app.application.SmartApplication.onCreate(SmartApplication.java:56)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)
at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:419)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-06-05 07:55:15.180 20345-20345/my.app.debug E/InstrumentationResultPrinter: Failed to mark test No Tests as finished after process crash
2020-06-05 07:55:15.181 20345-20345/my.app.debug E/MonitoringInstr: Exception encountered by: Thread[main,5,main]. Dumping thread state to outputs and pining for the fjords.
java.lang.InstantiationError: j$.util.o
at j$.util.DesugarCollections.synchronizedMap(:252)
at my.app.application.account.HostAccountManager.<init>(HostAccountManager.java:43)
at my.app.application.modules.ModulesManager.<init>(ModulesManager.java:25)
at my.app.application.modules.ModulesManager_Factory.get(ModulesManager_Factory.java:26)
at my.app.application.modules.ModulesManager_Factory.get(ModulesManager_Factory.java:9)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at my.app.application.injection.DaggerLiveHostComponent.injectSmartApplication(DaggerLiveHostComponent.java:359)
at my.app.application.injection.DaggerLiveHostComponent.inject(DaggerLiveHostComponent.java:286)
at my.app.application.SmartApplication.onCreate(SmartApplication.java:56)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1189)
at androidx.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:419)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6460)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
2020-06-05 07:55:15.182 20345-20345/my.app.debug E/THREAD_STATE: Thread[Profile Saver,5,system]
Thread[Binder:20345_1,5,main]
Thread[Binder:20345_3,5,main]
Thread[Signal Catcher,5,system]
Thread[ReferenceQueueDaemon,5,system]
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:442)
java.lang.Object.wait(Object.java:568)
java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:215)
java.lang.Daemons$Daemon.run(Daemons.java:137)
java.lang.Thread.run(Thread.java:919)
Thread[Binder:20345_2,5,main]
Thread[HeapTaskDaemon,5,system]
Thread[Jit thread pool worker thread 0,5,main]
Thread[FinalizerWatchdogDaemon,5,system]
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:442)
java.lang.Object.wait(Object.java:568)
java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:339)
java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:319)
java.lang.Daemons$Daemon.run(Daemons.java:137)
java.lang.Thread.run(Thread.java:919)
Thread[FinalizerDaemon,5,system]
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:442)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:271)
java.lang.Daemons$Daemon.run(Daemons.java:137)
java.lang.Thread.run(Thread.java:919)
Thread[main,5,main]
dalvik.system.VMStack.getThreadStackTrace(Native Method)
java.lang.Thread.getStackTrace(Thread.java:1720)
java.lang.Thread.getAllStackTraces(Thread.java:1796)
androidx.test.runner.MonitoringInstrumentation.getThreadState(MonitoringInstrumentation.java:671)
androidx.test.runner.MonitoringInstrumentation.dumpThreadStateToOutputs(MonitoringInstrumentation.java:666)
androidx.test.runner.MonitoringInstrumentation.onException(MonitoringInstrumentation.java:660)
androidx.test.runner.AndroidJUnitRunner.onException(AndroidJUnitRunner.java:526)
androidx.test.runner.MonitoringInstrumentation$3.uncaughtException(MonitoringInstrumentation.java:269)
java.lang.Thread.dispatchUncaughtException(Thread.java:2187)
Thread[ConnectivityThread,5,main]
android.os.MessageQueue.nativePollOnce(Native Method)
android.os.MessageQueue.next(MessageQueue.java:336)
android.os.Looper.loop(Looper.java:174)
android.os.HandlerThread.run(HandlerThread.java:67)
Thread[Instr: androidx.test.runner.AndroidJUnitRunner,5,main]
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:442)
java.lang.Object.wait(Object.java:568)
android.app.Instrumentation$SyncRunnable.waitForComplete(Instrumentation.java:2225)
android.app.Instrumentation.runOnMainSync(Instrumentation.java:440)
androidx.test.runner.MonitoringInstrumentation.runOnMainSync(MonitoringInstrumentation.java:433)
androidx.test.runner.MonitoringInstrumentation.tryLoadingJsBridge(MonitoringInstrumentation.java:823)
androidx.test.runner.MonitoringInstrumentation.onStart(MonitoringInstrumentation.java:310)
androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:359)
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2196)
2020-06-05 07:55:15.182 20345-20345/my.app.debug E/MonitoringInstr: Dying now...
The problematic line is:
private final Map<String, SimpleHostAccount> accountMap = Collections.synchronizedMap(new LinkedHashMap<>());
changing to
private final Map<String, SimpleHostAccount> accountMap = new LinkedHashMap<>();
fixes the problem for this single test and for all other tests.
For reproduction sample I would need more time in case it's necessary.
sg...@google.com <sg...@google.com> #4
Thanks for reporting back. The stack traces you have provided confirm a suspicion we have. You do not need to spend time on looking into a reproduction.
sg...@google.com <sg...@google.com> #5
This issue is caused by the desugared library code being packaged into both the "App Under Test" and "Test APK" with different sets of keep rules applied.
Without shrinking the desugared library code is still packaged into both the "App Under Test" and "Test APK", but here the two copies will be the same. This setup will work on some versions of Android, but there are known issues with duplicate classes (e.g.
The solution for this will be to package the desugared library code into the "App Under Test" in a version which have both sets of keep rules applied to support the use in the app and in both "App Under Test" and "Test APK".
Until this is fixed using the library desugared APIs in instrumented tests is not generally supported.
za...@gmail.com <za...@gmail.com> #6
As a temporary outlet, could it be possible to manually add keep rules to keep $j classes from being minified out of the test APK? We run device tests on minified versions and are finding this issue prevents us from using library desugaring entirely due to some being absent in the test APK
zs...@salesforce.com <zs...@salesforce.com> #7
Ivan and I talked about this more offline today and I've got a (hacky) workaround for this working in our repo. The issue is sort of two-fold:
- L8 will assume that "minified" also means "obfuscated", which isn't necessarily true. One problem that can arise is that it may obfuscate in both the test app and the tested app and rename different classes to the same name. So, step one is to disable obfuscation in the test app
- Even with that fix, there is still an issue with code in the main app trying to look up desugared APIs in the test app's dex files. We couldn't quite understand this one yet, but a workaround for this is to basically either
-keep
all j$ classes in your test app or try to discern the "used" desugared libs from your app and also add them to the inputs for the test app L8 task.
Blanket version:
tasks.withType<L8DexDesugarLibTask> {
if (name.endsWith("AndroidTest")) {
// To avoid collisions with obfuscated names
keepRulesConfigurations.set(listOf("-dontobfuscate"))
// To just keep everything in your test app that might be used by the tested app
keepRulesConfigurations.set(listOf("-keep class j$.** { *; }"))
}
}
A more surgical, unscrupulous approach that consumes the R8 task outputs and redirects them into the L8 task to tell it to keep the same things that the tested app keeps.
// Sadly can't escape doing this in afterEvaluate :(
val variant = <yourVariantHere> // release, externalRelease, etc
project.afterEvaluate {
val inputFiles = tasks.withType<R8Task>()
.named("minify${variant}WithR8")
.flatMap { it.projectOutputKeepRules }
tasks.withType<L8DexDesugarLibTask>()
.named("l8DexDesugarLib${variant}AndroidTest")
.configure {
keepRulesFiles.from(inputFiles)
keepRulesConfigurations.set(listOf("-dontobfuscate"))
}
}
ju...@veepee.com <ju...@veepee.com> #8
Any news on this? I tried to apply to my app/build.gradle the suggestion above, but when I copy/paste it I get that this string is not valid
"-keep class j$.** { *; }"
so I escape it
"-keep class j\$.** { *; }"
and when trying to sync the project I get this...
A problem occurred evaluating project ':app'.
> Could not get unknown property 'withType' for task set of type org.gradle.api.internal.tasks.DefaultTaskContainer.
Any tips?
AGP Version : 7.1.2 R8 Version: 3.1.66 Gradle version: 7.4 JVM Version: 11.0.14 (BellSoft 11.0.14+9-LTS)
sg...@google.com <sg...@google.com> #9
Downgrading this to P2, blocked by
jr...@squareup.com <jr...@squareup.com> #10
dm...@mapbox.com <dm...@mapbox.com> #11
Caused by: java.lang.NoSuchMethodError: No direct method <init>(Ljava/util/Map;)V in class Lj$/util/d; or its super classes (declaration of 'j$.util.d' appears in /data/app/~~YtJ1yCcb3QqYgPsOFx-s7w==/com.mapbox.dash.app.test-mHUdiku7Tcve7tkxTGOhoQ==/base.apk!classes2.dex)
at j$.util.DesugarCollections.synchronizedMap(Unknown Source:2)
at u3.u.<init>(RoomDatabase.kt:36)
at androidx.work.impl.WorkDatabase.<init>(WorkDatabase.kt:1)
Description
all required information.
Studio Build:
Version of Gradle Plugin: 4.0.0
Version of Gradle: 6.4.1
Version of Java: 11 and 8
OS: MacOs and Linux
Steps to Reproduce:
1. Run instrumented tests with coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.5 and coreLibraryDesugaringEnabled true in a multilibraries project with minifyEnabled true
2. Such errors are printed and process crashes
3. If minifyEnabled false, then it all works
Conclusion is that desugar_jdk_libs doesn't come with the proper Proguard/minification set of rules, which classes to keep:
> Task :MyApp:l8DexDesugarLibWebdeDebug
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$EntrySetView.class:
Type `j$.$r8$wrapper$java$util$Spliterator$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.Spliterator java.util.concurrent.ConcurrentHashMap$EntrySetView.spliterator()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$EntrySetView.class:
Type `j$.$r8$wrapper$java$util$function$Consumer$-V-WRP` was not found, it is required for default or static interface methods desugaring of `void java.util.concurrent.ConcurrentHashMap$EntrySetView.forEach($-vivified-$.java.util.function.Consumer)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToDoubleFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingDouble($-vivified-$.java.util.function.ToDoubleFunction)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$Function$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparing($-vivified-$.java.util.function.Function, java.util.Comparator)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToIntFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingInt($-vivified-$.java.util.function.ToIntFunction)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToLongFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingLong($-vivified-$.java.util.function.ToLongFunction)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/stream/Collectors$Partition.class:
Type `j$.$r8$wrapper$java$util$function$BiFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.lang.Object java.util.stream.Collectors$Partition.computeIfPresent(java.lang.Object, $-vivified-$.java.util.function.BiFunction)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/stream/Collectors$Partition.class:
Type `j$.$r8$wrapper$java$util$function$BiConsumer$-V-WRP` was not found, it is required for default or static interface methods desugaring of `void java.util.stream.Collectors$Partition.forEach($-vivified-$.java.util.function.BiConsumer)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$CollectionView.class:
Type `j$.$r8$wrapper$java$util$stream$Stream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.Stream java.util.concurrent.ConcurrentHashMap$CollectionView.parallelStream()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$CollectionView.class:
Type `j$.$r8$wrapper$java$util$function$Predicate$-V-WRP` was not found, it is required for default or static interface methods desugaring of `boolean java.util.concurrent.ConcurrentHashMap$CollectionView.removeIf($-vivified-$.java.util.function.Predicate)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$IntStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.IntStream java.util.concurrent.ThreadLocalRandom.ints()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$LongStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.LongStream java.util.concurrent.ThreadLocalRandom.longs()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$DoubleStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.DoubleStream java.util.concurrent.ThreadLocalRandom.doubles(long)`
R8: The method `java.awt.datatransfer.DataFlavor[] com.sun.mail.handlers.handler_base.getTransferDataFlavors()` does not type check and will be assumed to be unreachable.
(...)
> Task :MyApp:l8DexDesugarLibWebdeDebugAndroidTest
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToDoubleFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingDouble($-vivified-$.java.util.function.ToDoubleFunction)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$Function$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparing($-vivified-$.java.util.function.Function, java.util.Comparator)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToIntFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingInt($-vivified-$.java.util.function.ToIntFunction)`
Warning in synthesized for lambda desugaring:
Type `j$.$r8$wrapper$java$util$function$ToLongFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `java.util.Comparator java.util.-$$Lambda$Map$Entry$Y3nKRmSXx8yzU_Ap-vOwqAqvBas.thenComparingLong($-vivified-$.java.util.function.ToLongFunction)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/DesugarCollections$SynchronizedMap.class:
Type `j$.$r8$wrapper$java$util$function$BiFunction$-V-WRP` was not found, it is required for default or static interface methods desugaring of `void java.util.DesugarCollections$SynchronizedMap.replaceAll($-vivified-$.java.util.function.BiFunction)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/DesugarCollections$SynchronizedMap.class:
Type `j$.$r8$wrapper$java$util$function$BiConsumer$-V-WRP` was not found, it is required for default or static interface methods desugaring of `void java.util.DesugarCollections$SynchronizedMap.forEach($-vivified-$.java.util.function.BiConsumer)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$EntrySetView.class:
Type `j$.$r8$wrapper$java$util$Spliterator$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.Spliterator java.util.concurrent.ConcurrentHashMap$EntrySetView.spliterator()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$EntrySetView.class:
Type `j$.$r8$wrapper$java$util$function$Consumer$-V-WRP` was not found, it is required for default or static interface methods desugaring of `void java.util.concurrent.ConcurrentHashMap$EntrySetView.forEach($-vivified-$.java.util.function.Consumer)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$IntStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.IntStream java.util.concurrent.ThreadLocalRandom.ints()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$LongStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.LongStream java.util.concurrent.ThreadLocalRandom.longs()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ThreadLocalRandom.class:
Type `j$.$r8$wrapper$java$util$stream$DoubleStream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.DoubleStream java.util.concurrent.ThreadLocalRandom.doubles(long)`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$CollectionView.class:
Type `j$.$r8$wrapper$java$util$stream$Stream$-WRP` was not found, it is required for default or static interface methods desugaring of `$-vivified-$.java.util.stream.Stream java.util.concurrent.ConcurrentHashMap$CollectionView.parallelStream()`
Warning in /Users/myUsername/.gradle/caches/modules-2/files-2.1/com.android.tools/desugar_jdk_libs/1.0.5/359e5e4f4784f23beb30ba454b41f6f992e58481/desugar_jdk_libs-1.0.5.jar:java/util/concurrent/ConcurrentHashMap$CollectionView.class:
Type `j$.$r8$wrapper$java$util$function$Predicate$-V-WRP` was not found, it is required for default or static interface methods desugaring of `boolean java.util.concurrent.ConcurrentHashMap$CollectionView.removeIf($-vivified-$.java.util.function.Predicate)`
> Task :MyApp:connectedWebdeDebugAndroidTest
Starting 0 tests on Pixel 3 - 10
Tests on Pixel 3 - 10 failed: Instrumentation run failed due to 'Process crashed.'