酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Androidアプリのビルドで「Unsupported major.minor version 52.0」のビルドエラーが発生する

弊社では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]の順に選択します。

f:id:ch3cooh393:20160801170702p:plain

[Default Project Structure]を選択すると、SDKsが表示されるので、JDKのパスを変更してやる。

f:id:ch3cooh393:20160801170804p:plain

これで表題のビルドエラーを解決することができました。