読者です 読者をやめる 読者になる 読者になる

ほげほげ(仮)

仮死状態

AndroidにRetrolabmdaを導入する

Android

今更な感じもしますが、AndroidにRetrolabmdaを導入する手順です。

RetrolabmdaはJava5,6,7でJava8のラムダ式を使えるようにしたものです。

ちょっと導入設定で少しハマったので手順を残しておきます。

環境

JDK8インストール

Oracleのサイトからダウンロードしてインストールしましょう。

Java SE - Downloads | Oracle Technology Network | Oracle

Gradle

evant/gradle-retrolambdaというGradleプラグインを使います。

プロジェクト直下のbuild.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'me.tatarka:gradle-retrolambda:3.3.0-beta4'
    }
}

これを書いてる時はREADMEのほうに以下のような記述があったので、その通りにします。ここは今後変更される可能性があると思うので適宜変更してください。

Note: If you are using the 2.0.0-alpha/beta android gradle plugins, you should use 3.3.0-beta4 since it better supports instant run.

モジュール内のbuild.gradle

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

android {

    // ...

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

// ...

環境変数

次にJDK8のパスを設定する必要があります。これがないと次のようなエラーになります。

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> When running gradle with java 5, 6 or 7, you must set the path to jdk8, either with property retrolambda.jdk or environment variable JAVA8_HOME

これを解決するにはMacだとAndroidStudioの環境変数がうまく渡せなかったりする問題があります。そのため、色々な解決策があります。ターミナルから起動したり、launchctl setenvを使ったり。

ここでは一番簡単なAndroidStudio側の設定で解決します。

AndroidStudioのメニューからFile -> Project Structure... -> SDK Location -> JDK locationにJDK8のパスを設定するだけです。

これで動くようになるかと思います。