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)}
これが私のgradle設定です:
compileSdkVersion 27
//buildToolsVersion '27.0.3'
defaultConfig {
minSdkVersion 16
targetSdkVersion 27
multiDexEnabled true
//...
}
ご覧のとおり、私は27をターゲットにしています。これを修正するにはどうすればよいですか?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'
}
targetSdkVersion
。「これを修正するにはどうすればよいですか?」-Java 8互換性を有効にしてコンパイルしてみてください。「1.8 Javaに変更した場合、多くの顧客を見逃すことはありませんか?」-エラーメッセージが不平を言っているデフォルトのインターフェースメソッドのためではありません。「android studioをアップグレードする前にこのエラーが発生しなかったのはなぜですか?」-おそらく暗黙的な依存関係(たとえば、データバインディング)。