没有使用--min-sdk-version> = 24的默认或静态接口方法

时间:2017-10-15 11:06:22

标签: android java-8

为什么我们在Android Studio 3.0 RC1中出现此错误?

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

根据android docs,“默认和静态界面方法”功能与任何 min-sdk版本兼容。

我将其跟踪到一个调用Comparator.naturalOrder()的java库 - 它已在API级别24中添加。
所以我不希望在java库中对此代码有任何错误消息。

当我在自己的android-app或lib java代码中使用代码时,我看到正确的lint消息:“Call需要API级别24”“

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

4 个答案:

答案 0 :(得分:26)

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

在项目gradle.properties中,添加:

android.enableD8=true

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

答案 1 :(得分:3)

如果您正在谈论的java库是guava,您可以尝试将其升级到最新的特定于Android的构建

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

这对我来说很明显

答案 2 :(得分:0)

从guava v24我们有两个替代版本:Android或JRE。因此,在这种情况下,您需要将依赖项包括在:

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

查找仓库中的所有详细信息:https://github.com/google/guava

答案 3 :(得分:0)

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

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

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

这为我解决了这个问题。