je suis passé à 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)}
voici ma configuration config:
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
comme vous pouvez le voir, je cible 27 qui est déjà en avance sur 24 et dont il se plaint? Que dois-je faire exactement pour résoudre ce problème? Si je passe à 1.8 Java, est-ce que je ne manquerai pas beaucoup de clients? Pourquoi est-ce que je ne recevais pas cette erreur avant de mettre à jour Android Studio?.
je ne sais pas s'il s'agit de la classe LifecycleObserver que j'ai récemment introduite, elle était en kotlin et maintenant je l'ai changée en Java mais j'obtiens toujours la même erreur après le nettoyage du 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 d'où vient l'erreur pour que je puisse la réparer?
voici mes dépendances de ma version:
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'
}
Comme CommonsWare l'a mentionné, pour référence, ajoutez ceci dans la fermeture Android {...}
dans le fichier 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
}
...
}
Vous devez utiliser Java8 pour résoudre ce problème, en vous basant sur google , vous pouvez le faire en cliquant sur ( Fichier> Structure du projet ). et changez la compatibilité source et la compatibilité cible.
Et vous pouvez également le configurer directement dans le fichier build.gradle correspondant:
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
}
}
Mettez à jour votre build.gradle (Module: app), ajoutez le bloc compileOptions
et ajoutez le 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
}
}
Dans le niveau de l'application, vous devez écrire ce code:
Android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Ils proviennent de JavaVersion.Java sous Android.
Une énumération de Java versions.
Avant 9h: http://www.Oracle.com/technetwork/Java/javase/versioning-naming-139433.html
Après 9: http://openjdk.Java.net/jeps/22
@canerkaseler
Utilisez ce code dans votre build.gradle
Android {
compileOptions {
incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Cela m'est aussi arrivé, mais en utilisant des fonctionnalités dynamiques. J'avais déjà la compatibilité Java 8 activée dans le module d'application, mais je devais ajouter ces lignes de compatibilité au module Dynamic Feature, puis cela fonctionnait.
Vous pouvez résoudre ce problème en rétrogradant la version Java de la compatibilité source et de la compatibilité cible dans la dernière version Android Studio 3.4.1.
Ouvrez les paramètres du module (structure du projet) Winodw en cliquant avec le bouton droit de la souris sur le dossier de l'application ou sur la commande Commande + flèche vers le bas sur Mac
Modifiez la version de compatibilité de source et de compatibilité cible en version 1.8
Cliquez sur Appliquer ou sur OK, c'est tout. Cela résoudra votre problème.
Aussi, vous pouvez ajouter manuellement build.gradle (Module: app)
Android {
...
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
...
}