弊社ではJenkinsを使ってアプリのCIをおこなっています。ここ2ヶ月間は、少し毛色の違うプロジェクトをやっていたこともあって、ビルドサーバーのジョブは増えていませんでした。……というか
Androidアプリのビルド時に謎のエラーが発生した!
久しぶりにAndroidアプリのビルドジョブを追加すると、見たことのないタイプのエラーでビルドが止まっていました。
* What went wrong: A problem occurred evaluating project ':app'. > java.lang.UnsupportedClassVersionError: me/tatarka/RetrolambdaPlugin : Unsupported major.minor version 52.0
この「Unsupported major.minor version 52.0」は、コンパイラで使っているJDKのバージョンと実行環境であるJavaVMとが異なる場合にでるビルドエラーのようです。
結論を先に書くと、JDKのバージョンを1.8.0にアップデートして、Android Studioで利用するJavaコンパイラのパスをJDK 1.8.0に変更することでビルドエラーを解消することができました。
解決までの試行錯誤の記録
java -version
で調べてみると開発環境ではバージョン1.7.0を使用しています。
$ java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
なるほどなるほど?全く同じビルドエラーが発生しているものがピックアップされていました。
JDK 1.8.0をインストールしました。java -version
で調べてみるとJavaのランタイムバージョンが上がっていることが確認できます。
$ java -version java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
さて、再度同じようにビルドできるか試してみました。
* What went wrong: Execution failed for task ':app:compileRetrolambdaProductionRelease'. > Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
なるほど???
Android Studioで利用するJavaコンパイラのパスを変更する
ビルドエラーの文言は変わりましたが相変わらずエラーがでています。これを解決するためにはAndroid Studioの設定でデフォルトで使用するJava Compilerのパスを変更してやれば良いらしい。
Android Studioのメニューから[File]、[Other Settings]、[Default Project Structure]の順に選択します。
[Default Project Structure]を選択すると、SDKsが表示されるので、JDKのパスを変更してやる。
これで表題のビルドエラーを解決することができました。