【问题标题】:How to enable Java 8 language features in Android studio如何在 Android Studio 中启用 Java 8 语言功能
【发布时间】:2017-09-11 09:26:39
【问题描述】:
现在随 Android Studio 2.4 Preview 4 一起发布,现在支持 Java 8 language features。不再需要 Jack,需要禁用 Jack 才能使用默认工具链中内置的改进的 Java 8 支持。
现在我们需要禁用 Jack 并切换到默认工具链。
如何在 android studio 项目中启用 Java 8 功能?
【问题讨论】:
标签:
android
android-studio
build.gradle
android-studio-2.4
jack-toolchain
【解决方案1】:
启用 Java 8 支持:
要开始使用受支持的 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 Studio 默认使用这些工具提供的 Java 8 支持。
禁用 Java 8 支持:
如果您遇到任何与 Java 8 相关的问题,我们还可以在您的项目中禁用 Java 8 功能。我们可以通过添加以下行来更新 gradle.properties 文件以禁用 Java 8 功能:
android.enableDesugar=false
查看Use Java 8 language features 了解有关 Java 8 功能的更多详细信息。
【解决方案2】:
我知道这个问题已经得到解答,但是在新的 Gradle 和 android studio 更新之后,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
}
}
【解决方案3】:
简单的过程-
Right click on Project > Open Module Setting (F4) > Modules (app) >
选择 -
Source Compatibility - 1.8
Target Compatibility - 1.8
【解决方案4】:
干净的答案-
只需将关注添加到应用级别build.gradle 和Sync
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
【解决方案5】:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
并在同一个模块 gradle 中启用 jackOption
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
}
}