方法一(项目无apt插件)
在需要支持的module内添加
//支持Java8
defaultConfig.jackOptions.enabled = true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
例如
android {
compileSdkVersion 26
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.liompei.retrofitdemo"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//支持Java8
defaultConfig.jackOptions.enabled = true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
然后就可以使用Lambda表达式了
但是但是,开启jack编译后,不能使用apt插件了,就是这句话
defaultConfig.jackOptions.enabled = true
如果你的项目需要使用apt插件,同时又想使用Lambda表达式,可以使用下面一种方法(推荐)
方法二(项目有apt插件)
gradle-retrolambda
(最新版本可查看gradle-retrolambda的github链接)
打开Project的build.gradle,添加
classpath 'me.tatarka:gradle-retrolambda:3.6.1'
例如
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
// mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'me.tatarka:gradle-retrolambda:3.6.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
// mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
下一步,打开要使用Lambda表达式Module的build.gradle
添加
apply plugin: 'me.tatarka.retrolambda'
和
//支持Java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
例如
apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
android {
compileSdkVersion 26
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.liompei.retrofitdemo"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//支持Java8
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
这样就可以使用Lambda表达式了,同时可以使用apt插件
测试
//点击事件
findViewById(R.id.btn).setOnClickListener(view -> mTextView.setText("Hello"));
//RxJava2
Flowable.just("Hello world").subscribe(System.out::println);
关于Java8,建议看看这篇文章
在Android项目中使用Java8