コードも書けない初心者がReact Native × Expoでグーグルのアップデートによって発生したkotlinバージョン問題によって見事に沼にハマりました。
結果的に3日以上、毎日ビルド失敗と戦ってました。まじでメンタル削られます…。
でもようやく原因が見えてきたので、同じ地獄にハマっている誰かの救いになればと思ってこの記事を書きます。
💥 発端:ExpoでAdMob使おうとしたらビルド失敗
やったことはシンプル:
- Expoで新しいプロジェクト作成
react-native-google-mobile-ads
をインストールBannerAd
コンポーネントを配置eas build -p android
実行!
👉 そして現れたのがこれ:
kotlin_moduleModule was compiled with an incompatible version of Kotlin.
The binary version of its metadata is 2.1.0, expected version is 1.9.0.
> Task :react-native-google-mobile-ads:compileDebugKotlin FAILED
は!?Kotlinのバージョン???Expoなのに???
🔍 原因:Googleが勝手にKotlin 2.1.0に上げた
調べてみたところ、今回の犯人は Googleの広告SDK(Google Mobile Ads SDK)。
2025年3月23日にリリースされた react-native-google-mobile-ads@15.0.0
以降、内部的に Kotlin 2.1.0 に依存するようになったのが原因でした。
一方、Expo SDK 52までは Kotlin 1.9.0 が使われているので、当然ながらビルドエラーが発生します。
😱 つまり、ExpoではAdMobが動かない
このKotlinバージョンの食い違いにより、現在のExpo(SDK 52以下)では react-native-google-mobile-ads
を使うことができません。
Expo Go はもちろん、EAS Build でも失敗します。
🤔 解決策はあるのか?
いま取れる選択肢は主に3つ:
✅ 1. React Native CLIに乗り換える
いちばん手っ取り早いです。CLIなら自分でKotlinのバージョンも調整できます。
🕓 2. Expo SDKのアップデートを待つ(期待)
次のSDK(53以降?)でKotlin 2.1に対応してくれるのを待つ方法です。
Expoのリリースサイクルから見ると、2025年5月〜6月ごろに期待できそう。
🧪 3. 過去バージョンを使ってごまかす
react-native-google-mobile-ads@14.x
など、Kotlin 1.9でもビルドできたバージョンに戻す方法もあります。
ただし、これはサポート外だし将来的には厳しいので、あまりおすすめはしません。
しかし、この方法を何度試しても無理。chatgptとあらゆる方法を試したけどそれもダメでした・・・。
💡 今やっておくと良い「準備」
ExpoがKotlin 2.1対応したとき、すぐにビルドできるようにしておくのがおすすめ!
- AdMobのコードはもう書いておく
expo-build-properties
でkotlinVersion: "2.1.0"
を指定しておく(今は効かないけど準備として)eas.json
などの設定も用意しておく
アプリを作れるだけ作っておいて、アップデートを待ちたいと思います。
🧘♀️ まとめ:今は焦らず、備えて待つのが吉!
私は3日間ビルド失敗に泣かされましたが、調べて分かったのは:
悪いのはあなたでもExpoでもなく、Googleのアップデートタイミング。
ってこと。
今は焦って無理やり動かすより、Expo公式の対応を待ちながら、環境だけ整えておくのが一番ストレス少ないと思います。
長くなりましたが、同じように困ってる方の参考になれば嬉しいです!
コメント