我升级到了Android Studio 3.1,但是出现了以下错误:
仅从Android N(--min-api 24)开始支持默认接口方法:void android.arch.lifecycle.DefaultLifecycleObserver.onCreate(android.arch.lifecycle.LifecycleOwner)
Message{kind=ERROR, text=仅从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进行目标设置,而它已经超过了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'
}
targetSdkVersion
。我应该做什么来解决这个问题?-- 尝试启用Java 8兼容性后重新编译。如果我改成1.8 Java,我会错失很多客户吗?-- 对于错误信息所抱怨的默认接口方法,不会错过太多的客户。为什么我升级Android Studio之前没有遇到这个错误呢?-- 可能是隐式依赖(例如数据绑定)导致的。 - CommonsWare