更新:现在已经可以不使用第三方库,直接在android studio 中使用Lambda。至于具体如何操作:
步骤如下:
1. 在app/build.gradle 的android
节点下面的defaultconfig
下面添加一行jackOptions.enabled = true
2. 点击 android studio 的菜单栏上面的sync now
按钮
3. 等同步完成,就可以在.java
文件里面写出new Thread(()-> Log.e("Tag","Hello World!")).start();
这样的代码了。
此方法得以执行可能与
compileSdkVersion 25
有关,为了避免不能使用。我在这里贴出我的app/build.gradle
的全部内容:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.pythoncat.java8"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions.enabled = true /*关键就是这个,可以支持java8*/
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
testCompile 'junit:junit:4.12'
}
以下是使用第三方库来支持Lambda
的方法。
- 如你所知,在
Android
开发中现在也是可以使用Lambda
表达式了。不过是因为gradle-retrolambda的存在。 - 好了,经过我半天的摸索,我知道怎么去在
android studio
中去使用gradle-retrolambda
来进行Lambda
表达式的使用了。 - 首先说明一下我的开发环境
- 如上,可以看到,我是as版本是2.1的。sdk是23的。
- 当然,这并不重要,只是想说明一下在最新的环境中如何去使用gradle-retrolambda进行
Lambda
。 -
下面说明使用步骤:
- 1.使用as新建一个安卓工程。已经有的工程理论上同样适用
- 2.在工程已经准备完成之后,打开
Project Structrue
选项 - 如上,就是打开了
Project Structrue
。 - 3.选择
Modules
,一般就是app
,然后选择Dependencies
,点击”+”,选择Library dependency
。这时会弹出一个输入选择对话框,然后在上面输入gradle-retrolambda
,回车搜索,然后选择me.tatarka:gradle-retrolambda.XXXX
。注意,这里的XXX
是不同的版本号,以搜索结果为准。 - 4.然后,这一步很重要,就是在你的
Project
的build.gradle
的节点dependencies
下添加一行classpath 'me.tatarka:gradle-retrolambda:XXXXX'
。同样这后面的XXXX
依然取决于你之前的搜索结果。 5.在你的
Module
的build.gradle
中添加如下信息:略!!!。具体需要添加的,可以看下面的完整.gradle
文件-
6.然后,放出我当前的项目中的
.gradle
文件-
1.是
Project
的build.gradle
文件// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.1.0-alpha5' classpath 'me.tatarka:gradle-retrolambda:3.2.5'/*这个需要添加*/ // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
然后是
Module
的build.gradle
-
apply plugin: 'com.android.application' apply plugin: 'me.tatarka.retrolambda'/*这个需要添加*/ android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { applicationId "com.pythoncat.helloreactiveworld" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }/*这个需要添加*/ } // Required because retrolambda is on maven central repositories { mavenCentral() }/*这个需要添加*/ dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' }
-
只要这两个
.gradle
文件对了,就可以安心使用retrolambda
了。
最重要 的是的是:如果为了省事,可以将以上两个文件中注释说明需要添加的地方拷贝到自己的对应的.gradle
文件中就可以直接使用Lambda
了。
- 好吧,这个也许是gradle-retrolambda的
readme.md
的中文版解释吧~ - 打完收工。