Метод по умолчанию или статический интерфейс, используемый без --min-sdk-version >= 24

Почему мы получаем эту ошибку в Android Studio 3.0 RC1?

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

Согласно андроидным документам, функция "Метод по умолчанию и статический интерфейс" совместима с Any min- sdk.

Я проследил это до java-библиотеки, которая вызывает Comparator.naturalOrder() - которая добавлена ​​в уровень API 24.
Поэтому я не ожидал никакого сообщения об ошибке для этого кода в java-библиотеке.

Когда я использую код в своем собственном коде android-app или lib java, я вижу правильное сообщение lint: "Call требует API-уровня 24" )

Является ли сообщение об ошибке неправильным или я что-то не хватает?

Ответ 1

Я только выяснил, что он работает так, как ожидалось, когда я активирую D8 dexer, который планируется по умолчанию для Android Studio 3.1

В проекте gradle.properties добавьте:

android.enableD8=true

Теперь код компилируется так, как ожидалось, и я все еще получаю ожидаемые сообщения linter.

Ответ 2

Если java-библиотека, о которой вы говорите, была guava, вы можете попробовать обновить ее до последней сборки, зависящей от Android.

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

Это исправлено для меня