安卓快速入门系列1(通过插件使用java8的语法)

写在前面
本系列博客是我在第二次学习安卓之后开始的系列博客(第一次就看了5天,了解了一下而已),可能新手不是太适合。因为我的这个安卓学习是用到哪里学到哪里,工作了之后没有时间去一点一点的看书了,所以工作的时候用到了哪里就学习哪里,如果没有时间的话就简单研究一下。总之我用到哪里就开一篇博客,如果你跟着这个博客学习,你也会和我一样,在实战中练习技术,希望大家喜欢。

Google 发布了Android studio之后,方便了开发,也让Gradle这个构建工具带到了安卓的开发中,但是美中不足的是:目前安卓只支持java7及其以下的语法。java8的到来,让我们感受到了lambda表达式的魅力。
那网上有没有大牛实现了某些构建插件来支持java8呢?或者支持部分功能呢?
首先加入

classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'

然后再加入插件声明

apply plugin: 'me.tatarka.retrolambda'

好了现在支持lambda了
无图无真相
支持lambda之后的截图
但是底层还是用的旧语法,不支持Stream啊。
我们不能满足仅仅这点,找找合适的第三方库

compile 'com.annimon:stream:1.0.8'

好了支持了,继续上截图
加入支持的第三方Stream包之后的截图
好了,很完美
但是,毕竟使用的是插件编译的(插件其实是把代码兼容到了1.6或者1.7的版本而已,所以看不到java8的很多库),所以有些地方支持的并不是很完美,例如default方法,以及引用接口的静态方法,都会编译失败或者程序报错,所以不要使用那些新功能哦。
Google已经宣布要使用openjdk了,期待它能把更新的java版本带到安卓的世界来,让我们的开发更加便捷和容易。
最后,照例上全部代码。
app的gradle

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "xyz.cunzi.app.myapplication6"
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    compileOptions{
        sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_8
        targetCompatibility org.gradle.api.JavaVersion.VERSION_1_8
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.annimon:stream:1.0.8'
}

project的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-alpha4'
        classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'

        // 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
}

猜你喜欢

转载自blog.csdn.net/u014314578/article/details/51000113