デフォルトのインターフェースメソッドは、Android 7.0 (Nougat) 以降でのみサポートされます。質問する

デフォルトのインターフェースメソッドは、Android 7.0 (Nougat) 以降でのみサポートされます。質問する

Android Studio 3.1 にアップグレードしましたが、次のエラーが発生します。

デフォルトのインターフェース メソッドは、Android N (--min-api 24) 以降でのみサポートされます: void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)

メッセージ{kind=ERROR、text=デフォルトのインターフェース メソッドは、Android N (--min-api 24) 以降でのみサポートされます: void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)、sources=[不明なソース ファイル]、tool name=Optional.of(D8)}

エラー

これが私の 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
    }
...
}

おすすめ記事