错误:Jack需要支持Java 8语言功能。 启用插件或删除sourceCompatibility JavaVersion.VERSION_1_8

正如在developer.android网站中所提到的

如果你的项目依赖于Jack,那么你应该迁移到使用Android Studio默认工具链中内置的Java 8支持。“Jack工具链已经被废弃了。

在这里输入图像描述

我需要使用lambda表达式,所以我已经禁用了插口选项,但是当我编译我的代码时,出现以下错误

Error:Jack is required to support Java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8. 

以下是我的build.gradle文件的截图

在这里输入图像描述

检查你的com.android.tools.build:gradle版本。

我有同样的错误。 我的解决方案

  • 设置com.android.tools.build:gradle:3.0.0-alpha6
  • 更新kotlin到1.1.3-2
  • 添加到存储库google()

我正在使用AS 3.0 Canary 6。

以下是官方链接: https : //developer.android.com/guide/platform/j8-jack.html#configuration

你必须像下面这样配置:

 android { ... defaultConfig { ... jackOptions { enabled true } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } 

他们已经明确写道:“即时运行”目前不能与Jack一起工作,在使用新的工具链时将被禁用。

由于Jack在编译应用程序时不生成中间类文件,因此依赖于这些(中间)文件的工具当前不能与Jack一起工作。 这些工具的一些例子是:

在类文件上运行的棉绒探测器需要应用程序类文件的工具和库(例如JaCoCo的仪器测试)

杰克与遗留工具链的工作架构。 遗留的javac工具链:

 javac (.java → .class) → dx (.class → .dex) 

新杰克工具链:

 Jack (.java → .jack → .dex)