Метод по умолчанию или статический интерфейс, используемый без --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'
Это исправлено для меня