AndroidStudio下使用Lambda
Lambda在Java8得到支持,那么在开发Android项目时如何设置支持Lamdba表达式呢?
Google官方方式
使用Java8时,需要新的Jack工具链
- javac工具链:
javac (.java --> .class) --> dx(.class --> .dex)
- Jack工具链:
Jack (.java --> .jack --> .dex)
设置支持Java8
在Module级别的build.gradle中添加相关项
android {
...
defaultConfig {
...
//添加jack支持
jackOptions {
enabled true
}
}
//设置使用Java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
使用retrolambda插件
1.在项目级别的build.gradle中添加retrolambda支持
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:3.2.5'
}
}
// Required because retrolambda is on maven central
repositories {
mavenCentral()
}
2.在module级别的build.gradle中添加retrolambda插件,并且声明支持Java8
apply plugin: 'com.android.application'
//需要添加的retrolambda支持插件
apply plugin: 'me.tatarka.retrolambda'
android {
...
defaultConfig {
...
}
//注意 此处未开启Jack方式
//需要添加的Java8支持
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
...
}