Retrolambda - 需要Jack支持Java 8 - 警告修复

22

有没有办法在使用Retrolambda时禁用以下警告:

需要Jack支持Java 8语言特性。

因为它还没有编译我们的项目,所以我现在不想要Jack的支持。


这不是一个警告,只是一条信息。所以为什么要费心去关闭它呢? - Lovis
1
你不是很喜欢事情井然有序吗?但实际上在 Jenkins 中看起来很糟糕,因为有大约30行代码。 我知道这并不是什么大问题,但如果可以快速解决,何乐而不为呢? - miszmaniac
30行?有趣,我只有“仅有”的8行。不管怎样,我真的不在乎这些事情。(如果这是一个真正的警告,那就不同了) - Lovis
你成功解决了这个问题吗? - a.periz
很遗憾,我不能:( - miszmaniac
4个回答

14

Android Studio

在您的应用程序 gradle 中添加以下代码,然后进行同步

// ----- add
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.4'
    }
}

repositories {
    mavenCentral()
}
// ----- end

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' // ----- add 

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

//----add
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

6
这并没有回答这个问题。 - Giorgos Kylafas

5
您可以直接从您的build.gradle文件中删除以下配置:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
retrolambda 插件会自动处理这个问题,并使用正确的源代码和目标兼容性设置来设置 Java 编译器任务。

2
不,那样做不会消除这些消息(如果您使用retrolambda,则必须添加这些行)。 - Lovis
你有真正尝试过吗?查看retrolambda插件的源代码向我展示它确实像我所描述的一样,并且我刚刚测试了如果兼容性设置未设置为VERSION_1_8,则Jack警告会消失。 - T. Neidhart
我不是楼主,但我知道我在我的 build.gradle 中有这些行,但我仍然得到了这个信息 - 也许我需要更新 retrolambda。 - Lovis
已使用Android Gradle插件版本2.1.0、BuildTools版本24、Retrolamba插件3.2.5和3.3.0-beta4(最新版本)进行测试,信息消息已消失。 - T. Neidhart
5
我已经尝试过了,现在Android Studio显示语言级别与lambda表达式不兼容,而修复操作会将这些行添加回build.gradle文件 :) 你没有遇到这个问题吗? - miszmaniac
啊,我只在命令行上用gradle测试过。很遗憾,Android Studio会抱怨,那么我猜你别无选择了。 - T. Neidhart

1

-1
apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.3"
    defaultConfig {
        applicationId "io.github.rxandroid"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        jackOptions {
            enabled true

        }

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    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.3.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'

    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex:rxjava:1.3.0'
    compile 'com.jakewharton:butterknife:8.6.0'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.2.0'

}

2
你不应该使用这个 jackOptions { enabled true } 当Android Studio 3.0稳定版本发布后,你可以从项目中删除retrolambda,因为它已经在那里完美地工作了! - miszmaniac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接