Android Studio 3开始支持Java 7全部的特性,以及内置支持Java 8部分特性。
原理
Android Studio 3支持Java 8做法是使用称为desugar工具把javac编译后的.class做字节转换,转换为新的.class文件,最后使用dex转换为dex文件。
配置
Android Studio 3使用Java 8需要做以下配置:
1、升级Android的Grad了插件
在项目的build.gradle修改为buildscript {
repositories {
// 配置google maven仓库
google()
...
}
dependencies {
//插件需要3.0.0或以上
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
2、禁用Jack
Jack不再被支持,如果项目里有使用Jack,需要先禁用jack,删除jackOptions配置块即可。
android {
...
defaultConfig {
...
// 删除jackOptions配置
jackOptions {
enabled true
...
}
}
}
注意:如果Android Studio 3检测到项目支持使用Jack/ Retrolambda或 DexGuard,它默认会使用这些插件提供的Java 8功能。
3、设置sourceCompatibility 和 targetCompatibilityandroid {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
支持Java 8的特性列表
API level 24开始支持一下Java 8 API:java.util.stream
java.util.function
java.lang.FunctionalInterface
java.lang.annotation.Repeatable
java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class)
java.lang.reflect.Method.isDefault()
所有的Android API level支持try-with-resources
参考:https://developer.android.com/studio/write/java8-support.html