Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCo...

【声明:】本文是作者(蘑菇v5)原创,版权归作者 蘑菇v5所有,侵权必究。本文首发在。如若转发,请注明作者和来源地址!未经授权,严禁私自转载!

原因:AS新版本java8新特性需要jack工具链

  • 2016 年 3 月 10 日, Google 向外界发布了 Android N 的预览版,并宣布了 Android N 的 Roadmap ,Android N 的最终版源代码将于今年 8 或 9 月份释出到 AOSP 项目。
  • 在众多的 Android N 新特性中,有一项新工具链的出现与 Android 生态圈的所有开发者息息相关,即 Jack & Jill 编译器的引入。在依赖了 Sun/Oracle 的 Java 编译器十年之后,Jack 是 Java Android Compiler Kit 的缩写,它可以将 Java 代码直接编译为 Dalvik 字节码,并负责 Minification, Obfuscation, Repackaging, Multidexing, Incremental compilation。它试图取代 javac/dx/proguard/jarjar/multidex 库等工具。
  • Android 终于有了自己的 Java 编译器。Android7.0(API24)在对JAVA8 语言功能的支持上,需要一个名为 Jack 的新编译。Jack 仅在 Android Studio 2.1 和更高版本上才受支持。因此,如果要使用 Java 8 语言功能,则需使用 Android Studio 2.1 开发应用。
  • 支持 Java 8 语言功能需要一个名为 Jack 的新编译。Jack 仅在 Android Studio 2.1 和更高版本上才受支持。因此,如果要使用 Java 8 语言功能,则需使用 Android Studio 2.1 开发应用,还需使用新的 Jack 工具链。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 .jack库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。
以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:
  • 旧版 javac 工具链:
    javac (.java –> .class) –> dx (.class –> .dex)
  • 新版 Jack 工具链:
    Jack (.java –> .jack –> .dex)

解决办法:

在app目录下的build.gradle下加上以下配置:

 jackOptions {
            enabled true
        }
Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCo..._第1张图片
目录结构

如下:关键的代码

android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion

    defaultConfig {
        applicationId "..."
        minSdkVersion rootProject.ext.android.minSdkVersion
        targetSdkVersion rootProject.ext.android.targetSdkVersion
        versionCode rootProject.ext.android.versionCode
        versionName rootProject.ext.android.versionName
      
        //这句很关键
        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
    }
}

官方说明网址(需科学上网,你懂的):https://developer.android.com/preview/j8-jack.html

你可能感兴趣的:(Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCo...)