Android studio添加Java 8配置获取错误"无法获取未知属性"

时间:2016-12-23 02:21:55

标签: android android-studio java-8 realm

build.gradle config:

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
//apply plugin: 'android-apt'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "com.way.event"
        minSdkVersion 21
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        jackOptions {
            enabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:design:25.0.0'
    compile 'com.android.support:support-v4:25.0.0'
    testCompile 'junit:junit:4.12'
}

它不支持Java8:

  

错误:无法获取未知属性' classpath'为了任务   ':应用程序:transformJackWithJackForDebug'类型   com.android.build.gradle.internal.pipeline.TransformTask。

它与领域有什么关系?如何解决?

3 个答案:

答案 0 :(得分:3)

嗯,你仍然可以使用Retrolambda代替Jack,没有人阻止你使用lambdas。

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        classpath "io.realm:realm-gradle-plugin:1.2.0"
        classpath 'me.tatarka:gradle-retrolambda:3.2.5'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'realm-android'

android {
    compileSdkVersion xx
    buildToolsVersion "xx"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

适用于Java 8语言功能(lambdas,方法引用,try-with-resources)。

答案 1 :(得分:0)

感谢@ cricket_007

Support Jack compiler #3038

GitHub用户@kirsting,他告诉我他可以提供这个问题的解决方案。请查看下面对此问题的评论:

Java 1.8 and Android not working #2630

答案 2 :(得分:0)

删除以前依赖的lambda库,因为在3.0之后,AS本身支持lambda。

Apply plugin: 'me.tatarka.retrolambda' //Remove this sentence