[react native] expo buildからeas buildに移行方法まとめ

Pocket

expo buildがdeprecatedになり、将来的にはなくなるということでeas buildに移行する必要が出る。

自分の場合は、expo managed workflowのため、managed workflowからejectせずにそのままeas buildに移行する必要があった。

自分のアプリが使っている問題、(特にadmob)があり、公式のドキュメント通りやっても動かなかったので、自分が対処した方法をいかにまとめる。

eas buildを動かすまで

まずは必要なライブラリをインストールする必要があるが、これは公式に従うのみ。

https://docs.expo.dev/build-reference/migrating/

あとは、この辺を参考にした。

https://njkhanh.com/expo-sdk-45-p5f3138383230

Managed workflowの部分。

これが終われば、eas buildコマンド自体はできるようになる。

eas buildがエラーになる。。。

私の場合は、admobのライブラリが問題だった。eas buildになってからは、

expo-ads-admobが非推奨になる。将来的にはなくなる。そのため、

https://github.com/invertase/react-native-google-mobile-ads

にマイグレする必要がある。

マイグレ自体は簡単だが、expo-ads-admobが入ったまま、つまり、react-native-google-mobile-adsと一緒にインストールされていると、eas buildが通らない。。

yarn remove expo-ads-admob

これをしないとbuildが通らなかったし、またエラーメッセージもそういう表示がないので、かなり苦戦した。

また、app.jsonから必要な箇所も削除しておかないとbuildが通らない。ここだけで数日つかった。本当buildのエラーメッセージはもう少しわかりやすくしてくれよっという感じだった。

以下のgoogleMobileAdsAppIDの部分を消さないとbuildが通らない。

    "android": {
      // ...
      "config": {
        // ...
        "googleMobileAdsAppId": "ca-app-pub-3940256099942544~3347511713" // sample id, replace with your own
      }
    },
    "ios": {
      // ...
      "config": {
        // ...
        "googleMobileAdsAppId": "ca-app-pub-3940256099942544~1458002511" // sample id, replace with your own
      }
    }

あとは、buildしたバイナリをSimulatorにinstallしたり、

実機で見るときは、プロファイルを実機にインストールしたりと、expo よりも使い勝手は悪い部分はあるが、リアルタイムでソースコードの変更がsimulatorに反映されたり、といういい部分は残っている。

マイグレ自体は面倒であるが、マイグレしてよかったこと

まず、deprecatedになっているので、マイグレは絶対しないといけないので、選択はできない。

そのため、デメリットのほうが多いなって思っても結局やらないといけない。

ただし、マイグレを後押しする情報として、

  • build後のバイナリが半分以下のサイズになったこと
  • hermesが使えること(ただし、androidに問題があるので、ちょっと様子見はしたほうが良さそう)
  • dev-clientを入れることになるので、nativeのライブラリも今後利用可能になること.(ただ今回のbuildエラーを踏まえると、エラーが親切ではないので、問題があったときの特定が大変そう。)
  • eas submitすることで今までipaやapkパッケージを手動でアップロードする必要があったが、eas submitでアップロードまで完結できるようになったこと。

これらは大きなメリットである。

コメントを残す

%d人のブロガーが「いいね」をつけました。