managed workflowなExpoアプリをEAS buildに移行したい
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:
移行方法
で行けるだろうか。
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の内容はここでわかる。
build profileにdevelopment, preview, productionがあるらしい
productionはストアにアップロードするやつだろう。他のが気になる。
ここに全部書いてあった
development build
開発用ビルドは開発用ツールが含まれており、シミュレーターや実機に簡単にインストールしてデバッグできるもの。
expo-dev-client
に依存している
つまりカスタムのdev-clientを作るやつなのかな
ビルドしてみる
eas build -p android --profile development
実行すると共有可能な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と同じ条件と思っておけばよいのかな
iOSは試してない
試したいけど若干めんどい
EAS submit
こちらは設定したらストアへ自動的にアップロードしてくれるということで、設定したらやってくれるんでしょ感がある。
今回はドキュメント読むだけにとどめた。
おわりに
Expoを初めて体験したときに自分はこれはいいものだ!と思いました。
こいつネイティブアプリ作るのに本当にjavascript以外を触らせてくれない!と思ったものです。
EASもどんどん良くなっていきそうなので今後もRN, Expo推せそう
また、実際にネイティブコードをふくんだmanagement buildの方法がわかってないので別途調べたい
Discussion