[Flutter]アプリが終了(Terminated)状態のデバッグをする

広告Flutter
2024年3月30日

Flutter でアプリリンクやプッシュ通知を実装する時に、アプリが 終了(Terminated)状態の場合の処理をデバッグする機会があったので、その方法をまとめました。
実機でデバッグを想定しています。

iOS の場合

1. XcodeでSchemeの設定

Xcodeでプロジェクトを開きます。open ios/Runner.xcworkspace

Runner > Scheme > Edit Scheme を選択します。

Xcode スキーマ編集選択
Xcode スキーマ編集選択

Run > Info 画面のLaunchWait for the executable to be launched を選択します。

Xcode スキーマ編集画面の設定
Xcode スキーマ編集画面の設定

2. Xcodeでデバッグ

Run ボタンを押してアプリを実行します。
Waiting to attach to Runner ・・・ と表示されると、アプリが Terminated で待機している状態になります。

Xcode スキーマ編集画面の設定
Xcode スキーマ編集画面の設定

この状態で、アプリを起動します。
一度アプリを起動すると Terminate 状態には戻せないため、再度デバッグする場合は デバッグを停止してから再度実行します。

3. ログを確認

Terminated 状態のログを確認するには、Mac のコンソールアプリ/contents/blog/flutter-debug-terminated-app/ios-debug-terminated-console.png を利用します。
Mac のコンソールアプリを開き、デバイスを選択します。
開始ボタンを押すと、ログが表示されます。

コンソールアプリでログ確認
コンソールアプリでログ確認

flutter のログは flutter: で検索すると見つけやすいです。

つまづいた点

dart-define-from-file を利用していたのですが、Xcode でデバッグする際に環境変数を読み込むには・・・?となりましたが 先にビルドしておくと Xcode でデバッグできました。

flutter build ios --debug --dart-define-from-file=***.json

Android の場合

Android の場合は release モードでビルドすることで、Terminated 状態のデバッグができます。

flutter run --release

参考

How to debug deep linking for a terminated Flutter app on iOS

Save some time debugging your deep linked app!fora.comfora.com
How to debug deep linking for a terminated Flutter app on iOS

以上、Flutter でアプリリンクやプッシュ通知のアプリがターミネート状態の場合をデバッグする方法をまとめました。 どなたかの参考になれば幸いです。