Android Studio对Java8特性的支持
Android Studio 3.0及以上版本支持所有Java7语言功能,以及部分Java8语言功能,这里要注意一下,不是所有Java8特性都支持。
Android官网罗列的:支持的Java 8语言功能和API
使用默认工具链
所谓默认工具链,就是Android studio官方自带的工具集,用于Java8特性编译处理,非第三方工具,当然兼容性和稳定性更好,必须优先使用啊。
要开始使用受支持的Java8语言功能,请更新Android插件到3.0.0(或更高版本)。然后,针对使用(包括在源代码中或通过依赖项使用)Java8语言功能的每个模块,在其build.gradle文件中添加以下代码:
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
迁移至默认工具链
从 Jack 迁移
Jack工具链已经废弃,最好是迁移到默认工具链。
要停用Jack并切换至默认工具链,只需从您的模块build.gradle文件中移除jackOptions 块即可:
android {
...
defaultConfig {
...
// Remove this block.
jackOptions {
enabled true
...
}
}
// Keep the following configuration in order to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
从 Retrolambda 迁移
与 Android Studio的默认工具链相比,Retrolambda缺少对使用Java8语言功能的第三方库的支持。要迁移到默认工具链,请从您的项目级build.gradle文件中移除Retrolambda依赖项:
buildscript {
...
dependencies {
// Remove the following dependency.
classpath 'me.tatarka:gradle-retrolambda:<version_number>'
}
}
同时移除每个模块build.gradle文件中的Retrolambda插件和retrolambda块:
// Remove the following plugin.
apply plugin: 'me.tatarka.retrolambda'
...
// Remove this block after migrating useful configurations.
retrolambda {
...
// If you have arguments for the Java VM you want to keep,
// move them to your project's gradle.properties file.
jvmArgs '-Xmx2048m'
}
停用Java8语言特性支持
如果您遇到与Java 8语言功能支持相关的问题,可在gradle.properties文件中加入以下代码来停用此支持:
android.enableDesugar=false