Android coreLibraryDesugaringEnabled, сбой подключенного теста с ошибкой NoSuchMethodError

#android #android-testing #jdk-desugaring

#Android #android-тестирование #jdk-удаление

Вопрос:

Я добавил coreLibraryDesugaringEnabled в наше приложение, и оно отлично работает при обычном запуске приложения.

   compileOptions {
    coreLibraryDesugaringEnabled true
  }
 

и

   coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.9'
 

Однако, когда я запускаю подключенный тест, он завершается без такой ошибки метода в Stream классе:

 16:03:56.426 11998 12041 E AndroidRuntime: FATAL EXCEPTION: com....
16:03:56.426 11998 12041 E AndroidRuntime: Process: ...
16:03:56.426 11998 12041 E AndroidRuntime: java.lang.NoSuchMethodError: No static method e([Ljava/lang/Object;)Lj$/util/stream/Stream; in class Lj$/util/n; or its super classes (declaration of 'j$.util.n' appears in /data/app/com....-qU6nwXthxze4O_9rcf1hGg==/base.apk!classes2.dex)
16:03:56.426 11998 12041 E AndroidRuntime:  at j$.util.stream.Stream$-CC.of(:1000)
16:03:56.426 11998 12041 E AndroidRuntime:  at ...
 

Я нашел какую-то неопределенную ссылку, что это может быть связано с тем, что на класс ссылаются до вызова Multidex.install ? Я сначала ссылаюсь на класс как на статический инициализатор, поэтому к нему обращаются очень рано. Не уверен, что это отвлекающий маневр, но подумал, что стоит упомянуть об этом.

Если это помогает, тесты выполняются с. AndroidJUnit4ClassRunner

РЕДАКТИРОВАТЬ: я нашел неопределенную ссылку только в одной статье, в которой говорится, что это не поддерживается в инструментальных тестах:

Пожалуйста, обратите внимание, что в Android Studio 4.0 использование этих типов библиотеки в инструментальных тестах не поддерживается.

https://medium.com/androiddevelopers/support-for-newer-java-language-apis-bca79fc8ef65

но даже встроенное видео от Google об этой функции ничего не говорит об этом. Также не уверен, какое отношение к этому будет иметь версия AS. Возможно, они имели в виду версию AGP.