Android 使用Lambda表达式和Butterknife

Android 使用Lambda表达式和Butterknife,android,android-studio,gradle,lambda,butterknife,Android,Android Studio,Gradle,Lambda,Butterknife,我试图在代码中使用Lambda表达式,但出现了以下错误:此语言级别不支持Lambda表达式 我只是在SO上搜索它,找到了一个解决方案,将此添加到gradle文件: compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { ... jack

我试图在代码中使用Lambda表达式,但出现了以下错误:此语言级别不支持Lambda表达式

我只是在SO上搜索它,找到了一个解决方案,将此添加到gradle文件:

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }
然后我得到一个新错误:错误:无法获取任务的未知属性“classpath”:com.android.build.gradle.internal.pipeline.TransformTask类型的app:transformJackWithJackForDebug

再次搜索发现这是因为我不能同时使用jack和apt。。。因此,我删除这些行:

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
        ...
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        ...
    }
因为ButterKnife需要

那么如何在同一个项目中使用Lambda和Butterknife呢?

您应该在
build.gradle

 compile 'com.jakewharton:butterknife:8.4.0'
 annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
满刻度看起来像:

buildscript {
repositories {
   ....
}

dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    classpath 'me.tatarka:gradle-retrolambda:3.4.0'
   .....
}}
apply plugin: 'me.tatarka.retrolambda'
......

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

repositories {
}
dependencies {
    ..........
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
 }
}

注意:不要使用jackOption=Enabled

Butterknife 8.5不需要设置
apt
。最近的安装只需要:
compile'com.jakewharton:butterknife:8.4.0'annotationProcessor'com.jakewharton:butterknife compiler:8.4.0'
它说我要启用Jack:Error:Jack是支持java 8语言功能所必需的。启用Jack或删除sourceCompatibility JavaVersion.VERSION_1_8。我试图用上一个Android Studio预览版打开我的项目,该预览版通常支持Java 8,但有相同的问题。或者尝试启用
jackOptions{enabled true}
抱歉,这是我的错,我把这个
apply插件:“me.tatarka.retrolambda”
放在了错误的文件中。很有效,谢谢。