0、前言
其实呢开始的是很不想安装的因为网上那些文章写得不明不白,还有这个插件github上面的软件仓库是mavenCentral(),而我默认的是jcenter()啊,这就坑了,全部改为mavenCentral(),我的v7包还报错,总之坑啊,不过无聊还是给安装上了。
1、环境简介
android studio:2.1.3
gradle版本:2.14.1
java:jdk1.8 配置JAVA_HOME 和CLASSPATH环境变量
(后面两个大概是这样就行了,不用一模一样,这里举例而已,而且我这里没试验过,看其他文章看到的,有问题就注意一下这里就好了)
gradle-retrolambda github地址:https://github.com/evant/gradle-retrolambda
github描述:这是一个支持java1.6,java1.7和安卓的Lamdba表达式的gradle插件
在android视图下,我们看看整个project的build.gradle
project-初始配置:
// 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.3'
// 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
}
2、添加插件
虽然retrolambda上的文档说需要mavenCentral(),经测试,jcenter()也是可以的,可能新版本上传到jcenter了。其他版本自己试验把。
project-修改后配置
// 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.1.3'
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()
apply plugin: 'me.tatarka.retrolambda'//我是添加的
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
其实在project里面只加了两条语句
(1)、classpath 'me.tatarka:gradle-retrolambda:3.2.5'(这语句是gradle-retrolambda的导入吧,不知道怎么形容)
(2)、apply plugin: 'me.tatarka.retrolambda'(这句是应用插件的意思,留意一下他在allprojects节点下,看意思就知道这是该项目的全局设置)
接下来还需要在每个modules下的build.gradle下配置一下就可以使用了
module-初始配置
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "xxhui.com.demospace"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
module-修改后配置
apply plugin: 'com.android.application'
//这里注意一下,没有在project的build.gradle的allprojects节点添加apply plugin: 'me.tatarka.retrolambda'的话,
就要在这里的下一行添加apply plugin: 'me.tatarka.retrolambda',因为没有全局设置嘛
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
//----------------changex↓---------------------
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//-----------------change↑--------------------
defaultConfig {
applicationId "xxhui.com.demospace"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
}
可以看到这里只是添加一个compileOptions节点,用来指定项目的编译java版本为1.8,好就这样就配置完成啦
3、验证lambda表达式
出现上面的提示说明成功,而且下面哪句的v->{}语句没有报错
额,好了不知道会不会讲复杂了,很少的内容,篇幅很大。。
----------------------------------------华丽的分割线--------------------------------------------------------------
不小心看到最新的版本的android stuio的Build-tools可以支持lambda表达式了,这里只简单链接到那博客: