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 で社内配布す...
Search
takasfz
February 24, 2024
Programming
1.6k
0
Share
Flutterアプリを GitHub Actions & Xcode Cloud で社内配布する / Distribute Flutter apps internally
takasfz
February 24, 2024
More Decks by takasfz
See All by takasfz
Android with Functional Programming
takasfz
0
90
もっと! Alternative Resources / More About Alternative Resources
takasfz
5
1.3k
Instant Apps で考える広告の可能性 / InstantApps and Ads
takasfz
1
250
Other Decks in Programming
See All in Programming
なぜあなたのコードには「コシ」がないのか?〜AI時代に問う、最後まで美味しい設計と戦略〜 #phpconkagawa / phpconkagawa2026
shogogg
0
210
PHPでローカル環境用のSSL/TLS証明書を発行することはできるのか? #phpconkagawa
akase244
0
370
Surviving Black Friday: 329 billion requests with Falcon!
ioquatix
0
3.1k
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
5
1.7k
AI Agent と正しく分析するための環境作り
yoshyum
2
500
PicoRuby for IoT: Connecting to the Cloud with MQTT
yuuu
2
770
AIと共に生きる技術選定 2026
sgash708
0
140
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
3
930
いつか誰かが、と思っていた フロントエンド刷新5年間の実践知
kiichisugihara
1
280
Agent Skills を社内で育てる仕組み作り
jackchuka
1
2k
開発とはなにか、Essenceカーネルで見えるもの
ukin0k0
0
170
PHPer、Cloudflare に引っ越す
suguruooki
2
210
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
370
Joys of Absence: A Defence of Solitary Play
codingconduct
1
360
Designing Powerful Visuals for Engaging Learning
tmiket
1
370
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Designing Experiences People Love
moore
143
24k
Statistics for Hackers
jakevdp
799
230k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Everyday Curiosity
cassininazir
0
210
The World Runs on Bad Software
bkeepers
PRO
72
12k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
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の 面 倒な証明書管理から解放された • アプリのアップデートが端末に 自 動で配信されるようになった • アプリエンジニアが不在のときでもリリースできるようになった