Android Studio 中使用Lambda

时间:2022-03-30 18:59:02

更新:现在已经可以不使用第三方库,直接在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表达式的使用了。
  • 首先说明一下我的开发环境
  • Android Studio 中使用Lambda
  • 如上,可以看到,我是as版本是2.1的。sdk是23的。
  • 当然,这并不重要,只是想说明一下在最新的环境中如何去使用gradle-retrolambda进行Lambda
  • 下面说明使用步骤:

    • 1.使用as新建一个安卓工程。已经有的工程理论上同样适用
    • 2.在工程已经准备完成之后,打开Project Structrue选项
    • Android Studio 中使用Lambda
    • 如上,就是打开了Project Structrue
    • 3.选择Modules,一般就是app,然后选择Dependencies,点击”+”,选择Library dependency。这时会弹出一个输入选择对话框,然后在上面输入gradle-retrolambda,回车搜索,然后选择me.tatarka:gradle-retrolambda.XXXX注意,这里的XXX是不同的版本号,以搜索结果为准。
    • 4.然后,这一步很重要,就是在你的Projectbuild.gradle的节点dependencies下添加一行classpath 'me.tatarka:gradle-retrolambda:XXXXX'。同样这后面的XXXX依然取决于你之前的搜索结果。
    • 5.在你的Modulebuild.gradle中添加如下信息:略!!!。具体需要添加的,可以看下面的完整.gradle文件

    • 6.然后,放出我当前的项目中的.gradle文件

      • 1.是Projectbuild.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
        }
        
      • 然后是Modulebuild.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-retrolambdareadme.md的中文版解释吧~
  • 打完收工。