Slide 1

Slide 1 text

Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する たかつ @takasfz 沖縄モバイルアプリ開発勉強会 #2 2024/02/24

Slide 2

Slide 2 text

これまでは… • テスト 用 には Firebase App Distribution、リリース時には各ストアに、 それぞれ 手 作業でビルドしてアップロードしていた • モバイルアプリエンジニアは 自 分ひとり(稼働は週1 日 ) • リリース頻度は数ヶ 月 に 一 度 • テストはリリース前にざっと確認するのみ

Slide 3

Slide 3 text

自 動化したい 手 作業でも回ってはいるが、めんどい…

Slide 4

Slide 4 text

iOSの証明書管理が途端に 面 倒 自 動化しようとすると

Slide 5

Slide 5 text

GitHub Actions & Xcode Cloud そこで

Slide 6

Slide 6 text

開発環境 PR Merge GitHub GitHub Actions Xcode Cloud Google Play Console 内部テスト TestFlight Android Device iOS Device

Slide 7

Slide 7 text

本番環境(リリース前テスト) tag GitHub GitHub Actions Xcode Cloud Google Play Console 内部テスト TestFlight Android Device iOS Device

Slide 8

Slide 8 text

ストア申請 tag GitHub GitHub Actions Xcode Cloud Google Play Console 内部テスト TestFlight Android Device iOS Device Google Play Console 製品版 App Store Connect プロモート 審査に提出

Slide 9

Slide 9 text

メリット • Xcode Cloud + Automatically manage signing で、 iOSの証明書管理から解放された! • Play Console 内部テスト / TestFlight は、 アプリのアップデートが端末に 自 動配信される! • 社内配布したバイナリを、そのまま申請版にプロモートできる! Webからぽちぽちするだけなので、アプリエンジニアが不在のときでも 大 丈夫!

Slide 10

Slide 10 text

Flutterアプリを配布するためのコツ この構成で

Slide 11

Slide 11 text

Androidアプリのバージョンコードを 自 動採番する • Google Play Console 内部テストにアプリをアップロードする際は、 バージョンコードを現在配信中のアプリより 大 きい値にする必要がある • fl utter build appbundle --build-number=$(git rev-list --count HEAD) でバージョンコードに総コミット数を採 用 した

Slide 12

Slide 12 text

iOSアプリの署名を Xcode Cloud に任せる • fl utter build ipa コマンドを使うと iOSアプリの署名まで 行 おうとしてしまい、うまくいかない • fl utter build ipa --no-codesign で署名なしビルドを 行 い、 署名は Xcode Cloud の xcodebuild コマンドに任せるとうまくいった • 発表後追記: fl utter build ios --con fi g-only --no-codesign のほうが Flutter と Xcode Cloud で xcodebuild の実 行 が重複しなくて良さそう

Slide 13

Slide 13 text

まとめ

Slide 14

Slide 14 text

まとめ • GitHub Actions と Xcode Cloud を使ってアプリの社内配布を 自 動化した • iOSの 面 倒な証明書管理から解放された • アプリのアップデートが端末に 自 動で配信されるようになった • アプリエンジニアが不在のときでもリリースできるようになった