为什么我们在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'
这为我解决了问题。