android-使用Lambda表达式和Butterknife

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

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

compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

defaultConfig {
        ...
        jackOptions {
            enabled true
        }
    }

然后我得到一个新的错误:错误:无法获得类型为com.android.build.gradle.internal.pipeline.TransformTask的任务’:app:transformJackWithJackForDebug’的未知属性’classpath’.

再次在SO上搜索,发现这是因为我不能同时使用jack和apt …所以我删除了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'

Full 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 = Enabled

上一篇:android-在签名的apk中,butterknife不起作用


下一篇:多个dex文件定义了Lcom / squareup / javawriter / JavaWriter $Scope;在尝试使用Dagger和dagger-compiler进行编译时