不使用 --min-sdk 版本 >= 24 的默认或静态接口方法



为什么我们在Android Studio 3.0 RC1中会收到此错误?

 com.android.dx.cf.code.SimException: 
default or static interface method used without --min-sdk-version >= 24

根据 android 文档,"默认和静态接口方法"功能与任何 min-sdk 版本兼容。

我追踪到一个调用Comparator.naturalOrder()的java库 - 它已添加到API级别24中。
所以我根本不期望 java 库中的这段代码有任何错误消息。

当我在自己的 android 应用程序或 lib java 代码中使用代码时,我看到正确的 lint 消息:"调用需要 API 级别 24)"

是错误消息错误还是我错过了什么?

当我激活D8 dexer时,我刚刚发现它按预期工作,该D8 dexer计划成为Android Studio 3.1的默认设置

在项目gradle.properties 中,添加:

android.enableD8=true

现在代码按预期编译,我仍然收到预期的 linter 消息。

如果您所说的java库是番石榴,您可以尝试将其升级到最新的Android专用版本。

implementation 'com.google.guava:guava:23.0-android'

这为我修复了

从番石榴v24开始,我们有两个替代版本:Android或JRE。因此,在这种情况下,您需要将依赖项包含为:

compile 'com.google.guava:guava:24.1-android'

在存储库中查找所有详细信息:https://github.com/google/guava

如果此错误是由于番石榴引起的,那么根据Google的官方文档,解决方案是:https://github.com/google/guava

将依赖项更改为(在撰写本文时版本为最新版本):

api 'com.google.guava:guava:27.0-android'

这为我解决了问题。

最新更新