ゲーム開発の備忘録

趣味のゲーム開発でのノウハウや、技術的に嵌ったポイントを忘れないように書き記しておくブログです。

libGDXプロジェクトビルド時に発生するorg.bouncycastle.jcajceの競合が解決できない場合の対処法

蓋を開けてみたら滅茶苦茶初歩的なミスが原因でしたが、エラー内容から原因を推測できず、ググっても対処法が分からず、時間をかなり浪費したので自戒の意味も込めて記事にしておきます。

経緯

libGDXを用いてAndroidアプリ開発をしていましたが、 Mac, iPhoneを手に入れたので、制作しているアプリをiOSアプリとしてもリリースしたいと考えました。

早速MacAndroid Studioをインストールし、GitHubから最新のリポジトリをcloneして、 まずはAndroidアプリをエミュレータ経由で起動出来るようにするところから試し始めたのですが、 エミュレータ上での起動時に以下の例外が発生。

Caused by: java.lang.SecurityException: class "org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings"'s signer information does not match signer information of other classes in the same package

ああ、よくあるライブラリの競合だなと思って、libGDXのプロジェクトルートに飛び、

chmod 755 ./gradlew
cd android
../gradlew dependencies | grep org.bouncycastle

で依存関係をチェックしたのですが、一件もヒットしない!
そもそも、Windowsマシン側で正常に実行できるのに、Macでは実行できないというのは何か環境依存の原因があるのでは……
と思って泥沼にハマっていきました。

対処法

JAVA_HOMEの環境変数を正しく設定する。
以上!!

確かに環境依存の原因っちゃ原因ですが、悲しい。
org.bouncycastleについて詳しくなりましたが、その知識が役に立つことはありませんでした……