i++

プログラム系のメモ書きなど

Flutter : Flutter Desktop Embedding のデバッグ・ホットリロード(Windows)

increment.hatenablog.com

の続き。デバッグとホットリロードについて。基本的に Debugging Desktop Flutter Applications に書いてあることのメモ。


  • C++example\windows\flutter_embedder_example.cpparguments.push_back(argv[0]); の下に arguments.push_back("--observatory-port=49494"); を加える(49494 部分は適当な空いているポートであればなんでもいい)。
    • これで Observatory Port が 49494 に固定される。
    • プログラムを実行したときにコンソールに表示される flutter: Observatory listening on http://127.0.0.1:49494/ のような一文でポートは確認できる。
  • VS Codeexample\flutter_app ディレクトリを開く。
    • Flutter の Extension を入れてなければ入れて Reload する。
  • Debug パネルを開く(Ctrl + Shift + D)。
  • 左上の再生ボタンみたいなところから設定を追加する。
    • .vscode\launch.json ファイルができる。多分ファイルを直接作ってもよい。
  • リンク先の設定を configurations 内にコピペする。ポートは ↑ で設定した数字。
    • 「Property deviceId is not allowed.」という警告が launch.json ファイルに対して出るが、消したらデバッグできなくなるので無視する。
  • この(アプリが起動していて、VS Code で flutter_app ディレクトリを開き、launch.json を作った)状態で、VS Code 内で F5 を押すとアプリにアタッチされる。これで Flutter アプリのソースコード(lib/main.dart など)を編集すれば Hot Reload されて、VS Code で break point を設定すればそこに到達したときに止まる(incrementCounter で試した)
    • Hot Reload はあまり安定していない気がする?テキストの内容を変えてもボタン操作するまで反映されなかったり、いつまでたっても「Syncing files to device Flutter test device...」が終わらなくなったりした。後者の状態になると、VS Code から一度デバッグ終了や再接続などをしてもダメで、一度アプリの方も終了して起動し直す必要があった。

launch.json
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Flutter Desktop Attach",
            "request": "attach",
            "deviceId": "flutter-tester",
            "observatoryUri": "http://127.0.0.1:49494/",
            "type": "dart"
        }
    ]
}