美文网首页
Android Studio支持Java8方法

Android Studio支持Java8方法

作者: 贝黎明 | 来源:发表于2017-07-19 11:29 被阅读2138次

    方法一(项目无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

    相关文章

      网友评论

          本文标题:Android Studio支持Java8方法

          本文链接:https://www.haomeiwen.com/subject/mixlkxtx.html