我升级到Android Studio 3.1,我得到以下错误:

默认的接口方法只支持从Android N(——min-api 24)开始:void Android .arch.lifecycle. defaultlifecycleobserver . oncreate (Android .arch. lifecycleowner) 消息{kind=ERROR, text=默认接口方法只支持从Android N开始(——min-api 24): void Android .arch. lifeccycle . defaultlifecycle观察者. oncreate (Android .arch. lifeccycle . lifecycleowner), sources=[未知源文件],工具名=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'
    }

当前回答

这种情况也发生在我身上,但使用的是动态特性。我已经在应用程序模块中启用了Java 8兼容性,但我必须将此兼容性行添加到动态特性模块中,然后它才能工作。

其他回答

在构建中使用此代码。gradle文件:

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

我的项目使用ButterKnife和Retro lambda。设置JavaVersion。VERSION_1_8将不能工作。它总是责怪ButterKnife静态接口函数,直到我发现这个Migrate from Retrolambda。

博士TL;

只需添加javaverse。VERSION_1_8并从项目中完全删除retrolambda。它将成功构建。

您可以通过在最新的Android Studio 3.4.1版本中将Source Compatibility和*Target Compatibility Java版本降级到1.8来解决此问题。

在Mac上右键单击app文件夹或Command + Down箭头打开模块设置(项目结构)窗口 选择模块→属性 将源兼容性和目标兼容性版本更改为1.8 单击Apply或OK。就是这样。它会解决你的问题。

也可以手动添加文件构建。gradle(模块:app):

android {
...

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

...
}

更新build.gradle(Module:app),添加compileOptions块,并添加javaverse。VERSION_1_8

apply plugin: 'com.android.application'

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

将minSdkVersion从19改为21为我解决了这个问题。

defaultConfig {
    applicationId "com.example"
    minSdkVersion 21
    targetSdkVersion 29
    versionCode 23
    versionName "1.0"
    vectorDrawables.useSupportLibrary = true
}