Android Studio中使用java8

想要在Android中使用java8的lambda語法, 使用官方方法需要準(zhǔn)備:

  1. Android Studio 2.1 以上
  2. 啟用 Jack 編譯
    不過這個 Jack 編譯會帶來一些問題,例如,不能用 Instant Run,使用butternife或dagger時會出現(xiàn)問題

jackoption和butternife沖突,
jack: .java -> .jack -> .dex
java: javac(.java->.class) dx(.class -> .dex)
butternife的原理是使用反射找到注解對象, 當(dāng)jackoptions enable時,不產(chǎn)生.class類,無法使用反射

解決方案:
在Project的build.gradle文件中添加step1,2,3

buildscript {
    repositories {
        jcenter()
        // step1
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        // step2
        classpath 'me.tatarka:gradle-retrolambda:3.4.0'
    }
}


allprojects {
    repositories {
        jcenter()
        //step3
        mavenCentral()
    }
}

Module的build.gradle: step1,2,3

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


android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"

    //...

    // step2
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:25.0.0'
    // step3
    compile 'me.tatarka:gradle-retrolambda:3.4.0'
}

Github: https://github.com/evant/gradle-retrolambda

Android中使用java8的Stream 官方方法的限制是必須使用在安卓24以上, 顯然不行, 非官方的兼容庫, 做法如下:

dependencies {    
...
        compile 'com.annimon:stream:1.1.9'
}

Github地址: https://github.com/aNNiMON/Lightweight-Stream-API

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容