如何在 Android studio 中启用 Java 8 种语言功能

How to enable Java 8 language features in Android studio

现已与 Android Studio 2.4 Preview 4 一起发布,现已支持 Java 8 language features。不再需要 Jack,并且需要禁用 Jack 才能使用内置于默认工具链中的改进的 Java 8 支持。

现在我们需要禁用 Jack 并切换到默认工具链。

如何在 android 工作室项目中启用 Java 8 个功能?

启用Java8支持:

要开始使用支持的 Java 8 种语言功能,请将 Android 插件更新到 2.4.0-alpha4(或更高版本)并将以下内容添加到您的 模块的 build.gradle 文件:

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

禁用 jackOptions:

我们可以禁用 Jack 并切换到默认工具链,方法是从模块的 build.gradle 文件中删除 jackOptions 块:

android {
    ...
    defaultConfig {
        ...
        // Remove this block.
        jackOptions {
            enabled true
        }
    }

}

注意: 如果您的项目使用 Jack、Retrolambda 或 DexGuard,则 Android 工作室默认使用这些工具提供的 Java 8 支持。

禁用Java8支持:

如果您遇到任何相关问题,我们还可以禁用项目中的 Java 8 个功能 Java8。我们可以通过添加以下行来更新 gradle.properties 文件以禁用 Java 8个特征:

android.enableDesugar=false

查看 Use Java 8 language features 了解有关 Java 8 项功能的更多详细信息。

简单的过程-

Right click on Project > Open Module Setting (F4) > Modules (app) >

Select -

Source Compatibility - 1.8
Target Compatibility - 1.8

我知道这已经得到解答,但在新的 Gradle 和 android 工作室更新后,jackOptions 已弃用。

 android {
      .....

        defaultConfig {
        ..........
            //remove jackOptions and add
            android.compileOptions.sourceCompatibility 1.8
            android.compileOptions.targetCompatibility 1.8

        }
        // Keep the following configuration in order to target Java 8.
         compileOptions {

           sourceCompatibility JavaVersion.VERSION_1_8
           targetCompatibility JavaVersion.VERSION_1_8
       }
  }

干净的答案-

只需将以下内容添加到应用级别 build.gradleSync

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

并在同一模块中启用 jackOption gradle

 defaultConfig {
            jackOptions {
            enabled true
        }
    }

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "****************"
        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 {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }
}