1. ホーム
  2. アンドロイド

[解決済み】デフォルトのインターフェースメソッドはAndroid 7.0(Nougat)からしかサポートされません。)

2022-03-26 20:35:31

質問

Android Studio 3.1にアップグレードしたところ、以下のエラーが発生しました。

デフォルトインターフェイスのメソッドは、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) } ・Defaultインタフェースのメソッドに対応するため、Android Nでは、Defaultインタフェースのメソッドをサポートしない。

以下は私の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'
    }

解決方法は?

として コモンズウェアについて の中に追加してください。 android {...} を使用することで、問題を解決することができます。

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