Windows から Flutter iOS をデバッグする: 実機ワークフロー (Flutter 3.x)
Windows から Flutter iOS アプリをデバッグするための実用的なワークフロー: ビルドは GitHub Actions の macOS にオフロードし、IPA を実機 iPhone にインストールして、flutter attach で hot reload と DevTools を使います。
数週間ごとに、同じ痛点が再浮上します: “私は Windows です。実機の iPhone で Flutter iOS アプリをデバッグしたい。本当に Mac が必要ですか?”。直近の r/FlutterDev の投稿では、実用的な回避策が提案されています: iOS のビルドを GitHub Actions の macOS にオフロードし、Windows からインストールしてアタッチしてデバッグするというものです: https://www.reddit.com/r/FlutterDev/comments/1qkm5pd/develop_flutter_ios_apps_on_windows_with_a_real/
その背後にあるオープンソースプロジェクトはこちらです: https://github.com/MobAI-App/ios-builder。
問題を分割する: macOS でビルド、Windows でデバッグ
iOS には 2 つの厳しい制約があります。
- Xcode のツール群は macOS 上で動きます。
- 実機へのインストールと署名には、Windows からは回避できないルールがあります。
しかし Flutter のデバッグは、ほぼ “実行中のアプリにアタッチして VM service と話す” というものです。つまり、デバッグ可能なアプリを端末に届けられるなら、ビルドとインストールを開発者ループから切り離せます。
投稿で説明されている流れはこうです。
.ipaを生成する macOS の CI ジョブをトリガーします。- その成果物を Windows にダウンロードします。
- 物理接続した iPhone に (ブリッジアプリ経由で) インストールします。
- Windows から
flutter attachを実行して、hot reload と DevTools を得ます。
IPA を生成する最小限の GitHub Actions ビルド
これがすべてではありません (署名はそれ自体が別のうさぎ穴です)。ただし、要となる考え方は示せます: macOS ランナーがビルドして成果物をアップロードします。
name: ios-ipa
on:
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: stable
- run: flutter pub get
- run: flutter build ipa --debug --no-codesign
- uses: actions/upload-artifact@v4
with:
name: ios-ipa
path: build/ios/ipa/*.ipa
--no-codesign が許容できるかどうかは、どうインストールするかによります。実機向けの多くの経路では、デバッグフローでも何らかの段階で署名が必要です。
Windows 側のループ: インストールしてアタッチする
iPhone でアプリがインストールされて動き出せば、Flutter 側は通常通りになります。
# From Windows
flutter devices
flutter attach -d <device-id>
Hot reload が機能するのは、同じマシンでビルドしたからではなく、デバッグセッションにアタッチしているからです。
最初からトレードオフを理解する
このワークフローは便利ですが、魔法ではありません。
- 署名は依然として実在します: 証明書、プロビジョニングプロファイル、あるいはサードパーティのインストーラー経路に向き合うことになります。
- 依然として実機が必要です: シミュレーターは Windows で動きません。
- CI ジョブが開発ループの一部になります: ビルド時間を最適化し、依存関係をキャッシュしてください。
オリジナルの記事と、これを引き起こしたリポジトリが欲しい場合はこちらから始めてください: https://github.com/MobAI-App/ios-builder。iOS デバッグに関する Flutter の公式ガイドについては、プラットフォームのドキュメントも近くに置いておきましょう: https://docs.flutter.dev/platform-integration/ios/ios-debugging。
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.