Java8からStream APIやラムダ式など、Reactive Programming的なモダンなパラダイムや文法がサポートされ、Androidでも利用したいと思うようになってきました。
RxAndroidなどを利用したStreamAPIの導入は、職場などではより一層ハードルも高いですが、ラムダ式などは敷居も低く、できれば導入したいと思うところです。
今回は、retrolambdaというバックポートツールを使ってラムダ式の導入を試して見たいと思います。
導入
基本的に特別なことはなにもないです。
本家のGithubにあるREADMEに従ってGradleを変更すればOKです。
RxAndroidとあわせて導入している事例は下記が参考になりました。
build エラーに対応する
Android StudioではJava7でビルドを仕掛けますが、retrolambdaではJava8を利用するようで、その指定が必要です。
しかし、GithubにあるようにJAVA8_HOME
の指定をしても、うまくビルドが通せません。
|
|
これはAndroid Studioが環境変数を参照していないことが原因です。 つまりターミナルで設定しているローカルな環境変数(.bash_profileなど)は、別のプロセスで動作するAndroid Studio には影響を与えられない、ということのようです。
Setup problem? · Issue #17 · evant/gradle-retrolambda · GitHub
従って、上記にあるように環境変数のスコープを広げるか、ローカルな環境変数が設定されたプロセスでAndroid Studioを起動するかすれば解決できることになります。
とりあえず、コマンドラインから起動して、ローカル環境変数を有効にしてみます。
|
|
これでビルドできました!