Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する / Distribute Flutter apps internally

takasfz
February 24, 2024

Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する / Distribute Flutter apps internally

takasfz

February 24, 2024
Tweet

More Decks by takasfz

Other Decks in Programming

Transcript

  1. これまでは… • テスト 用 には Firebase App Distribution、リリース時には各ストアに、 それぞれ 手

    作業でビルドしてアップロードしていた • モバイルアプリエンジニアは 自 分ひとり(稼働は週1 日 ) • リリース頻度は数ヶ 月 に 一 度 • テストはリリース前にざっと確認するのみ
  2. 開発環境 PR Merge GitHub GitHub Actions Xcode Cloud Google Play

    Console 内部テスト TestFlight Android Device iOS Device
  3. ストア申請 tag GitHub GitHub Actions Xcode Cloud Google Play Console

    内部テスト TestFlight Android Device iOS Device Google Play Console 製品版 App Store Connect プロモート 審査に提出
  4. メリット • Xcode Cloud + Automatically manage signing で、 iOSの証明書管理から解放された!

    • Play Console 内部テスト / TestFlight は、 アプリのアップデートが端末に 自 動配信される! • 社内配布したバイナリを、そのまま申請版にプロモートできる! Webからぽちぽちするだけなので、アプリエンジニアが不在のときでも 大 丈夫!
  5. Androidアプリのバージョンコードを 自 動採番する • Google Play Console 内部テストにアプリをアップロードする際は、 バージョンコードを現在配信中のアプリより 大

    きい値にする必要がある • fl utter build appbundle --build-number=$(git rev-list --count HEAD) でバージョンコードに総コミット数を採 用 した
  6. 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 の実 行 が重複しなくて良さそう
  7. まとめ • GitHub Actions と Xcode Cloud を使ってアプリの社内配布を 自 動化した

    • iOSの 面 倒な証明書管理から解放された • アプリのアップデートが端末に 自 動で配信されるようになった • アプリエンジニアが不在のときでもリリースできるようになった