341 votes

Les méthodes d'interface par défaut ne sont prises en charge qu'à partir d'Android N

J'ai mis à niveau vers android studio 3.1 et j'obtiens l'erreur suivante:

    Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=Default interface methods are only supported starting with Android N (--min-api 24): void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner), sources=[Unknown source file], tool name=Optional.of(D8)}

enter image description here

voici mon gradle config:

      compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 27
     multiDexEnabled true
     //...
   }

Comme vous pouvez le voir, je suis ciblage 27 qui est déjà en avance de 24 que sa se plaindre. Exactement ce que dois-je faire pour résoudre ce problème? Si je change à 1,8 java, ne vais-je pas être manque beaucoup de clients? Pourquoi je n'obtiens pas cette erreur avant que je mette à jour android studio?

Je ne sais pas si c'est à propos de la LifecycleObserver classe j'ai récemment mis en, il a été dans kotlin et maintenant je l'ai changé pour java, mais toujours obtenir la même erreur après le nettoyage de projet:

public class LifeCycleAwareObserver implements LifecycleObserver {

@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
public void  onAppBackgrounded() {
    AnalyticsUtils.trackStartSession(true);
}

@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onAppForegrounded() {
    AnalyticsUtils.trackStartSession(false);
}

}

Comment tracer où l'erreur est de venir de si je peux résoudre ce problème?

voici ma version de dépendances:

project.ext {


        firebase_version = '12.0.0'

        supportlib_version = '27.0.2'

        room_version = '1.0.0'

        espresso_version = '3.0.1'

        archLifecycleVersion = '1.1.1'
    }

741voto

j2emanue Points 3456

Comme CommonsWare l'a mentionné, pour référence, ajoutez ceci dans le android {...} fermeture dans le module build.gradle pour que votre module d'application résolve le problème:

 android {
...
  compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
...
}
 

88voto

Amir Points 670

Vous devez utiliser Java8 pour résoudre ce problème, basé sur google , vous pouvez le faire par (cliquez sur Fichier > Structure de Projet). et de changer la Compatibilité de Source et de Cible de Compatibilité.

enter image description here

Et Vous pouvez également le configurer directement dans le construire.gradle fichier:

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

63voto

Caner Points 378

En application de niveau gradle, vous avez à écrire ce code:

android {
...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Ils viennent de JavaVersion.java dans Android.

Un recensement des versions de Java.

Avant 9: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html

Après 9: http://openjdk.java.net/jeps/223

@canerkaseler

48voto

Vasudev Vyas Points 310

Mettez à jour votre build.gradle (Module: app), ajoutez compileOptions block et ajoutez JavaVersion.VERSION_1_8

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "ApplicationId"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}
 

27voto

Rajesh Dalsaniya Points 525

Vous pouvez résoudre ce problème par la dégradation de la Compatibilité de Source et de Cible de Compatibilité de la Version de Java à 1,8 dans le Dernier Android Studio Version 3.4.1

  1. Ouvrez les Paramètres du Module (Structure de Projet) Winodw par un clic droit sur le dossier app ou Commande + Flèche vers le Bas sur Mac enter image description here

  2. Aller à des Modules -> Propriétés enter image description here

  3. Changer la Compatibilité de Source et de Cible de Compatibilité de la Version 1.8 enter image description here

  4. Cliquez sur Appliquer ou OK c'est tout. Il permettra de résoudre votre problème.

Aussi, vous pouvez l'ajouter manuellement dans la construction.gradle (Module: app)

android {
...

compileOptions {
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    }

...
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X