Методы интерфейса по умолчанию поддерживаются только начиная с Android N

Я обновился до Android Studio 3.1 и получаю следующую ошибку:

    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

вот мой конфиг gradle:

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

Как вы можете видеть, я нацеливаюсь на 27, которые уже опережают 24, на которые жалуются. Что именно я должен сделать, чтобы это исправить? Если я перейду на 1.8 Java, я не буду скучать по многим клиентам? Почему я не получил эту ошибку до того, как обновил Android Studio?

Я не знаю, касается ли это класса LifecycleObserver, который я недавно вставил, он был в kotlin, и теперь я изменил его на java, но по-прежнему получаю ту же ошибку после очистки проекта:

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);
}

}

Как отследить, откуда исходит ошибка, чтобы я мог ее исправить?

вот мои зависимости от версии:

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'
    }

Ответ 1

Как упомянул CommonsWare, для справки добавьте это в закрытие android {...} в build.gradle для вашего модуля приложения для решения проблемы:

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

Ответ 2

Вы должны использовать Java8 для решения этой проблемы, на основе Google вы можете сделать это (нажмите Файл> Структура проекта). и измените Совместимость источника и Целевую совместимость.

enter image description here

И Вы также можете настроить его непосредственно в соответствующем файле build.gradle:

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
  }
}

Ответ 3

Обновите свой build.gradle (Модуль: приложение), добавьте блок compileOptions и добавьте 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
    }
}

Ответ 5

Вы можете решить эту проблему, понизив версию Java Compatibility и Target Compatibility до версии 1.8 в последней версии Android Studio 3.4.1

  1. Откройте настройки модуля (структура проекта) Winodw, щелкнув правой кнопкой мыши папку приложения или Ctrl + Стрелка вниз на Mac enter image description here

  2. Перейти к модулям → Свойства enter image description here

  3. Изменить версию "Совместимость источника" и "Целевая совместимость" на 1.8 enter image description here

  4. Нажмите на Применить или ОК. Это решит вашу проблему.

Также вы можете вручную добавить в build.gradle (Модуль: приложение)

android {
...

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

...
}

Ответ 6

Используйте этот код в вашем build.gradle

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

Ответ 7

Вы должны сказать Gradle, что вы используете Java 8 в своем исходном коде.

Измените файл build.gradle в каталоге приложения или в вашей библиотеке; Не root build.gradle в директории вашего основного проекта

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

Ответ 8

Это также случилось со мной, но с использованием динамических функций. У меня уже была включена совместимость с Java 8 в модуле приложения, но мне пришлось добавить эти строки совместимости в модуль Dynamic Feature, и тогда это сработало.