sistema - Los métodos de interfaz predeterminados solo son compatibles a partir de Android N
sistema operativo de huawei (7)
Actualice su build.gradle (Módulo: aplicación) agregue el bloque
compileOptions
y agregue
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
}
}
Actualicé a Android Studio 3.1 y obtengo el siguiente error:
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)}
aquí está mi configuración de gradle:
compileSdkVersion 27
//buildToolsVersion ''27.0.3''
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
como puede ver, estoy apuntando a 27, que ya está por delante de 24, ¿de qué se queja? ¿Qué debo hacer exactamente para solucionar esto? si cambio a 1.8 java, ¿no faltarán muchos clientes? ¿Por qué no recibo este error antes de actualizar Android Studio?
No sé si se trata de la clase LifecycleObserver que instalé recientemente, estaba en Kotlin y ahora la cambié a Java pero sigo teniendo el mismo error después de limpiar el proyecto:
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);
}
}
¿Cómo rastrear de dónde viene el error para poder solucionarlo?
Aquí están mis dependencias de mi versión:
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''
}
Como CommonsWare mencionó, para referencia agregue esto dentro del cierre de
android {...}
en build.gradle para que el módulo de su aplicación resuelva el problema:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}
Debe usar Java8 para resolver esto, basado en google puede hacerlo (haga clic en Archivo> Estructura del proyecto ). y cambiar la compatibilidad de origen y la compatibilidad de destino.
Y también puede configurarlo directamente en el archivo build.gradle correspondiente:
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
}
}
En gradle de nivel de aplicación, debe escribir este código:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Vienen de JavaVersion.java en Android.
Una enumeración de versiones de Java.
Antes del 9: http://www.oracle.com/technetwork/java/javase/versioning-naming-139433.html
Después del 9: http://openjdk.java.net/jeps/223
@canerkaseler
Esto también me sucedió a mí pero usando las características dinámicas. Ya tenía habilitada la compatibilidad con Java 8 en el módulo de la aplicación, pero tuve que agregar estas líneas de compatibilidad al módulo Dynamic Feature y luego funcionó.
Puede resolver este problema degradando la versión Java de compatibilidad de origen y compatibilidad de destino a 1.8 en la última versión de Android Studio 3.4.1
-
Abra la Configuración del módulo (Estructura del proyecto) Winodw haciendo clic derecho en la carpeta de la aplicación o Comando + Flecha abajo en Mac
-
Cambie la versión de compatibilidad de origen y de compatibilidad de destino a 1.8
-
Haga clic en Aplicar o Aceptar Eso es todo. Resolverá tu problema.
También puede agregar manualmente en build.gradle (Módulo: aplicación)
android {
...
compileOptions {
sourceCompatibility = ''1.8''
targetCompatibility = ''1.8''
}
...
}
Use este código en su build.gradle
android {
compileOptions {
incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}