Android coreLibraryDesugaringEnabled,连接测试崩溃并出现NoSuchMethodError错误。

7

我在我们的应用中添加了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

但是,即使谷歌的嵌入式视频介绍该功能,也没有提到这一点。而且我也不确定AS版本与此有何关系。也许他们指的是AGP版本。

1个回答

0

这个问题已在com.android.tools:desugar_jdk_libs版本1.1.8(至少)中得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接