您的位置:首页 > 编程语言 > Java开发

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

2016-03-28 18:26 561 查看
写在前面

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

Google 发布了Android studio之后,方便了开发,也让Gradle这个构建工具带到了安卓的开发中,但是美中不足的是:目前安卓只支持java7及其以下的语法。java8的到来,让我们感受到了lambda表达式的魅力。

那网上有没有大牛实现了某些构建插件来支持java8呢?或者支持部分功能呢?

首先加入

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


然后再加入插件声明

apply plugin: 'me.tatarka.retrolambda'


好了现在支持lambda了

无图无真相



但是底层还是用的旧语法,不支持Stream啊。

我们不能满足仅仅这点,找找合适的第三方库

compile 'com.annimon:stream:1.0.8'


好了支持了,继续上截图



好了,很完美

但是,毕竟使用的是插件编译的(插件其实是把代码兼容到了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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: