web-dev-qa-db-fra.com

Méthode d'interface statique ou par défaut utilisée sans --min-sdk-version> = 24

Pourquoi avons-nous cette erreur dans Android Studio 3.0 RC1?

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

Selon le Documents Android , la fonctionnalité "Méthodes d'interface statique et par défaut" est compatible avec la version Any min-sdk.

Je l'ai retrouvé dans une bibliothèque Java qui appelle Comparator.naturalOrder () - qui a été ajouté dans le niveau 24 de l'API.
Donc, je ne m'attendrais pas du tout à un message d'erreur pour ce code dans une bibliothèque Java.

Lorsque j'utilise le code dans mon propre code pour Android-app ou Java, je vois le message correct qui convient: "L'appel requiert un niveau 24)"

Le message d'erreur est-il faux ou est-ce que je manque quelque chose?

17
TmTron

Je viens de découvrir que cela fonctionne comme prévu lorsque j'active le D8 dexer qui est prévu pour être la valeur par défaut pour Android Studio 3.1.

Dans le projet gradle.properties, ajoutez:

Android.enableD8=true

Maintenant, le code est compilé comme prévu et les messages de linter attendus me parviennent toujours.

26
TmTron

Si la bibliothèque Java dont vous parlez était de la goyave, vous pouvez essayer de la mettre à niveau vers la dernière version spécifique à Android.

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

Ce fixé pour moi

3
Diego Plentz

Si cette erreur est due à Guava, la solution proposée dans la documentation officielle de Google est la suivante: https://github.com/google/guava

Changez la dépendance en (la version est à jour au moment de l'écriture):

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

Cela a résolu le problème pour moi.

0
Sam

De guava v24, nous avons deux versions alternatives: Android ou JRE. Donc, dans ce cas, vous devez inclure la dépendance en tant que:

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

Retrouvez tous les détails dans le référentiel: https://github.com/google/guava

0
Rafa0809