📐

managed workflowなExpoアプリをEAS buildに移行したい

2021/12/23に公開

ExpoのEASが正式サービス開始し、managedワークフローでも利用できるということなので調べて試してみました。

情報収集

公式ドキュメントが充実しているので、公式だけ見ればおk

EASとは

Expo Application Service

従来のマネージドワークフローでのビルド結果にはExpoが提供している機能をまるっと内包していた。
そのためアプリのサイズが大きかったり、内包している機能以外をカスタム対応できない問題があった。

EASはmanaged workflowの上記のような制約を取り払うものであり、マネージドワークフローの開発体験のままで、カスタムネイティブコードを取り入れることができるようになり、バンドルサイズも小さくなるらしい。
つまりこれって、bare workflowいらなくなるものなの?そういうわけではない?
bare workflowとの境界が曖昧になりそうな感はあるな。どっちもbare workflowといえる感

また、ネイティブコードをカスタムした場合は、Expo Goではなくオリジナルのdev clientアプリをビルドできるようだ。

EASにはmanaged workflowの開発体験を引き継げるような2つの機能がある

EAS buildはクラウド上でアプリをビルドしてくれるサービス
EAS submitはビルド結果をストアへアップロードしてくれる

基本的には上位互換ぽいし、今後はEASに移行していきそうなので移行してみましょう!
(expo buildのサポートいつまでとかどっか書いてある?残るんだろうか)

REF:

移行方法

  1. https://docs.expo.dev/build/setup/ を実行
  2. https://docs.expo.dev/build-reference/migrating/ で該当箇所の対応

で行けるだろうか。

Expo SDKはバージョン41以上が必要。でも43あったほうが良さそう

EAS buildを実際に試してみる

configure

まず、eas build:configure を実行すると eas.json が作成される

{
  "cli": {
    "version": ">= 0.42.4"
  },
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal"
    },
    "production": {}
  },
  "submit": {
    "production": {}
  }
}

jsonの内容はここでわかる。
https://docs.expo.dev/build-reference/eas-json/

build profileにdevelopment, preview, productionがあるらしい
productionはストアにアップロードするやつだろう。他のが気になる。

ここに全部書いてあった
https://docs.expo.dev/build/eas-json/

development build

開発用ビルドは開発用ツールが含まれており、シミュレーターや実機に簡単にインストールしてデバッグできるもの。
expo-dev-client に依存している
つまりカスタムのdev-clientを作るやつなのかな

ビルドしてみる

eas build -p android --profile development

実行すると共有可能なQRコードが生成された
QRコード

これをAndroidから読ませるとapkを直接ダウンロードしてきてインストールという形でした。なるほど

preview build

プレビュービルドは、開発者ツールを含まず、プロダクションに近いが、内部に配布しやすい検証用ビルドという位置づけ。

ビルドしてみる

eas build -p android --profile preview

こちらもdevelopment buildと同じくQRコードが出てきたので、同じフローでインストールするっぽい

Expo Goは引き続き使える?利用条件ある?

カスタムExpo Goっていうの見た記憶あるけど、廃止っぽい
development buildをつかえってことか https://docs.expo.dev/archived/adhoc-builds/

bare workflowと同じ条件と思っておけばよいのかな
https://docs.expo.dev/bare/using-expo-client/

iOSは試してない

試したいけど若干めんどい

EAS submit

こちらは設定したらストアへ自動的にアップロードしてくれるということで、設定したらやってくれるんでしょ感がある。
今回はドキュメント読むだけにとどめた。

おわりに

Expoを初めて体験したときに自分はこれはいいものだ!と思いました。
こいつネイティブアプリ作るのに本当にjavascript以外を触らせてくれない!と思ったものです。
EASもどんどん良くなっていきそうなので今後もRN, Expo推せそう

また、実際にネイティブコードをふくんだmanagement buildの方法がわかってないので別途調べたい

Discussion