Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する / Distribute Flutter apps internally
Search
takasfz
February 24, 2024
Programming
0
210
Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する / Distribute Flutter apps internally
takasfz
February 24, 2024
Tweet
Share
More Decks by takasfz
See All by takasfz
Android with Functional Programming
takasfz
0
52
もっと! Alternative Resources / More About Alternative Resources
takasfz
5
1.2k
Instant Apps で考える広告の可能性 / InstantApps and Ads
takasfz
1
230
Other Decks in Programming
See All in Programming
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
130
SwiftUIで使いやすいToastの作り方 / How to build a Toast system which is easy to use in SwiftUI
lovee
3
150
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
120
Ruby Function Composition
bkuhlmann
1
340
TCAとKMPを用いた新規動画配信アプリ 「ABEMA Live」の設計
tomu28
2
120
Kotlin Multiplatform at Stable and Beyond (Android Makers 2024)
zsmb
0
410
Random\Randomizer クラスで日常のあれこれを解決しよう! / Random\Randomizer class solves familiar trouble
cocoeyes02
0
260
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
550
ゆるい個人開発のススメ
kuroppe1819
10
1k
Going beyond Apache Parquet's default settings
xhochy
0
120
PostmanでAPIの動作確認が楽になった話
h455h1
0
170
使ってみよう Azure AI Document Intelligence
kosmosebi
2
350
Featured
See All Featured
Building Adaptive Systems
keathley
32
1.9k
Automating Front-end Workflow
addyosmani
1357
200k
Web development in the modern age
philhawksworth
203
10k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
358
22k
The Power of CSS Pseudo Elements
geoffreycrofte
61
5k
Design by the Numbers
sachag
274
18k
Faster Mobile Websites
deanohume
300
30k
The Cost Of JavaScript in 2023
addyosmani
18
3.9k
Why Our Code Smells
bkeepers
PRO
331
56k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
Practical Orchestrator
shlominoach
183
9.7k
Facilitating Awesome Meetings
lara
43
5.6k
Transcript
Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する たかつ @takasfz 沖縄モバイルアプリ開発勉強会
#2 2024/02/24
これまでは… • テスト 用 には Firebase App Distribution、リリース時には各ストアに、 それぞれ 手
作業でビルドしてアップロードしていた • モバイルアプリエンジニアは 自 分ひとり(稼働は週1 日 ) • リリース頻度は数ヶ 月 に 一 度 • テストはリリース前にざっと確認するのみ
自 動化したい 手 作業でも回ってはいるが、めんどい…
iOSの証明書管理が途端に 面 倒 自 動化しようとすると
GitHub Actions & Xcode Cloud そこで
開発環境 PR Merge GitHub GitHub Actions Xcode Cloud Google Play
Console 内部テスト TestFlight Android Device iOS Device
本番環境(リリース前テスト) tag GitHub GitHub Actions Xcode Cloud Google Play Console
内部テスト TestFlight Android Device iOS Device
ストア申請 tag GitHub GitHub Actions Xcode Cloud Google Play Console
内部テスト TestFlight Android Device iOS Device Google Play Console 製品版 App Store Connect プロモート 審査に提出
メリット • Xcode Cloud + Automatically manage signing で、 iOSの証明書管理から解放された!
• Play Console 内部テスト / TestFlight は、 アプリのアップデートが端末に 自 動配信される! • 社内配布したバイナリを、そのまま申請版にプロモートできる! Webからぽちぽちするだけなので、アプリエンジニアが不在のときでも 大 丈夫!
Flutterアプリを配布するためのコツ この構成で
Androidアプリのバージョンコードを 自 動採番する • Google Play Console 内部テストにアプリをアップロードする際は、 バージョンコードを現在配信中のアプリより 大
きい値にする必要がある • fl utter build appbundle --build-number=$(git rev-list --count HEAD) でバージョンコードに総コミット数を採 用 した
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 の実 行 が重複しなくて良さそう
まとめ
まとめ • GitHub Actions と Xcode Cloud を使ってアプリの社内配布を 自 動化した
• iOSの 面 倒な証明書管理から解放された • アプリのアップデートが端末に 自 動で配信されるようになった • アプリエンジニアが不在のときでもリリースできるようになった