使用Lambda表达式和Butterknife

时间:2017-04-26 04:48:10

标签: android android-studio gradle lambda butterknife

我试图在我的代码中使用Lambda表达式,但是我收到了这个错误:语言级别不支持 lambda表达式

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

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

然后我收到一个新错误:错误:无法获取未知属性' classpath' for task':app:transformJackWithJackForDebug' com.android.build.gradle.internal.pipeline.TransformTask类型。

再次搜索SO,发现这是因为我无法同时使用jack和apt ...所以我删除了删除这些行:

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

dependencies {
        ...
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        ...
    }

因为ButterKnife需要贴身而出现了新的错误......

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

1 个答案:

答案 0 :(得分:4)

您应该在build.gradle

中使用 注释处理器 作为Butter-knife库
 compile 'com.jakewharton:butterknife:8.4.0'
 annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

完全Gradle看起来像:

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 =已启用