跳到主內容

除錯您的 add-to-app 模組

如何執行、除錯和熱過載您的 add-to-app Flutter 模組。

一旦將 Flutter 模組整合到您的專案中,並使用 Flutter 的平臺 API 執行 Flutter 引擎和/或 UI,您就可以像執行普通 Android 或 iOS 應用一樣構建和執行您的 Android 或 iOS 應用。

只要您的程式碼中包含 FlutterActivityFlutterViewController,Flutter 就會為其提供 UI 支援。

概述

#

您可能習慣於在使用 flutter run 或 IDE 中的等效命令時使用整套 Flutter 除錯工具。但您也可以在 add-to-app 場景中使用所有的 Flutter 除錯功能,例如熱過載、效能疊加層、DevTools 和設定斷點。

flutter attach 命令提供了這些功能。要執行此命令,您可以使用 SDK 的 CLI 工具、VS Code、IntelliJ IDEA 或 Android Studio。

當您執行 FlutterEngine 後,flutter attach 命令就會建立連線。它會保持連線狀態,直到您銷燬 FlutterEngine。您可以在啟動引擎之前呼叫 flutter attachflutter attach 命令會等待引擎託管的下一個可用 Dart VM。

從終端除錯

#

要從終端進行連線(attach),請執行 flutter attach。要選擇特定的目標裝置,請新增 -d <deviceId>

flutter attach

該命令應輸出類似於以下內容的資訊

Syncing files to device iPhone 15 Pro...
 7,738ms (!)

To hot reload the changes while running, press "r".
To hot restart (and rebuild state). press "R".

在 Xcode 和 VS Code 中除錯 iOS 擴充套件

#

在終端中構建 Flutter 應用的 iOS 版本

#

要生成所需的 iOS 平臺依賴項,請執行 flutter build 命令。

flutter build ios --config-only --no-codesign --debug
Warning: Building for device with codesigning disabled. You will have to manually codesign before deploying to device.
Building com.example.myApp for device (ios)...

先在 VS Code 中開始除錯

#

如果您習慣在 VS Code 中除錯大部分程式碼,請從本節開始。

在 VS Code 中啟動 Dart 偵錯程式
#
  1. 要開啟 Flutter 應用目錄,請轉到 File(檔案) > Open Folder...(開啟資料夾...) 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 如果您可以在多臺裝置上構建應用,則必須先選擇裝置。

    轉到 View(檢視) > Command Palette...(命令面板...)

    你也可以按 Ctrl / Cmd + Shift + P

  4. 輸入 flutter select

  5. 點選 Flutter: Select Device(Flutter:選擇裝置) 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的蟲子圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 Debug(除錯) 面板並啟動應用。等待應用在裝置上啟動,並觀察除錯面板顯示 Connected(已連線)。偵錯程式首次啟動耗時較長。後續啟動速度會更快。

    此 Flutter 應用包含兩個按鈕

    • Launch in browser(在瀏覽器中啟動):此按鈕在裝置的預設瀏覽器中開啟此頁面。
    • Launch in app(在應用中啟動):此按鈕在您的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
啟用自動連線
#

您可以配置 VS Code,以便在每次開始除錯時自動連線到您的 Flutter 模組專案。要啟用此功能,請在您的 Flutter 模組專案中建立一個 .vscode/launch.json 檔案。

  1. 轉到 View(檢視) > Run(執行)

    您也可以按 Ctrl / Cmd + Shift + D

    VS Code 會顯示 Run and Debug(執行和除錯) 側邊欄。

  2. 在此側邊欄中,點選 create a launch.json file(建立 launch.json 檔案)

    VS Code 會在頂部顯示 Select debugger(選擇偵錯程式) 選單。

  3. 選擇 Dart & Flutter

    VS Code 將建立並開啟 .vscode/launch.json 檔案。

    展開以檢視示例 launch.json 檔案
    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": "my_app",
                "request": "launch",
                "type": "dart"
            },
            {
                "name": "my_app (profile mode)",
                "request": "launch",
                "type": "dart",
                "flutterMode": "profile"
            },
            {
                "name": "my_app (release mode)",
                "request": "launch",
                "type": "dart",
                "flutterMode": "release"
            }
        ]
    }
    
  4. 要進行連線,請轉到 Run(執行) > Start Debugging(開始除錯)

    你也可以按 F5

在 Xcode 中連線到 Flutter 程序
#

要在 Xcode 中連線到 Flutter 應用

  1. 轉到 Debug(除錯) > Attach to Process(連線到程序)

  2. 選擇 Runner。它應該出現在 Attach to Process(連線到程序) 選單頂部,位於 Likely Targets(可能的除錯目標) 標題下。

先在 Xcode 中開始除錯

#

如果您習慣在 Xcode 中除錯大部分程式碼,請從本節開始。

啟動 Xcode 偵錯程式
#
  1. 從您的 Flutter 應用目錄中開啟 ios/Runner.xcworkspace

  2. 使用工具欄中的 Scheme(方案) 選單選擇正確的裝置。

    如果沒有特定偏好,請選擇 iPhone Pro 14

  3. 在 Xcode 中將此 Runner 作為普通應用執行。

    執行完成後,Xcode 底部的 Debug(除錯) 區域會顯示一條包含 Dart VM 服務 URI 的訊息。它類似於以下響應

    2023-07-12 14:55:39.966191-0500 Runner[58361:53017145]
        flutter: The Dart VM service is listening on
        http://127.0.0.1:50642/00wEOvfyff8=/
    
  4. 複製 Dart VM 服務 URI。

在 VS Code 中連線到 Dart VM
#
  1. 要開啟命令面板,請轉到 View(檢視) > Command Palette...(命令面板...)

    您也可以按 Cmd + Shift + P

  2. 輸入 debug

  3. 點選 Debug: Attach to Flutter on Device(除錯:連線到裝置上的 Flutter) 命令。

  4. Paste an VM Service URI(貼上 VM 服務 URI) 框中,貼上您從 Xcode 複製的 URI,然後按 Enter

在 Android Studio 中除錯 Android 擴充套件

#
  1. 要開啟 Flutter 應用目錄,請轉到 File(檔案) > Open...(開啟...) 並選擇 my_app 目錄。

  2. 開啟 lib/main.dart 檔案。

  3. 選擇一個虛擬 Android 裝置。轉到工具欄,開啟最左側的下拉選單,然後點選 Open Android Emulator: <device>(開啟 Android 模擬器:<裝置>)

    您可以選擇任何已安裝且不包含 arm64 的模擬器。

  4. 從同一個選單中,選擇虛擬 Android 裝置。

  5. 從工具欄中,點選 Run 'main.dart'(執行 'main.dart')

    您也可以按 Ctrl + Shift + R

    應用在模擬器中顯示後,請繼續下一步。

無需 USB 連線進行除錯

#

要在 iOS 或 Android 裝置上透過 Wi-Fi 除錯您的應用,請使用 flutter attach

在 iOS 裝置上透過 Wi-Fi 除錯

#

對於 iOS 目標,請完成以下步驟

  1. 按照 iOS 設定指南 中的說明,驗證您的裝置是否已透過 Wi-Fi 連線到 Xcode。

  2. 在您的 macOS 開發機器上,開啟 Xcode > Product(產品) > Scheme(方案) > Edit Scheme...(編輯方案...)

    您也可以按 Cmd + <

  3. 點選 Run(執行)

  4. 點選 Arguments(引數)

  5. Arguments Passed On Launch(啟動時傳遞的引數) 中,點選 +

    1. 如果您的開發機器使用 IPv4,請新增 --vm-service-host=0.0.0.0

    2. 如果您的開發機器使用 IPv6,請新增 --vm-service-host=::0

    <DashImage figure img-class="site-mobile-screenshot border" image="development/add-to-app/debugging/wireless-port.png" caption="添加了 IPv4 網路後的啟動引數設定", width="100%" />

要確定您是否在使用 IPv6 網路

#
  1. 開啟 Settings(設定) > Wi-Fi

  2. 點選您連線的網路。

  3. 點選 Details...(詳細資訊...)

  4. 點選 TCP/IP

  5. 檢查是否有 IPv6 地址 部分。

    WiFi dialog box for macOS System Settings

    macOS 系統設定的 Wi-Fi 對話方塊

在 Android 裝置上透過 Wi-Fi 除錯

#

按照 Android 設定指南 中的說明,驗證您的裝置是否已透過 Wi-Fi 連線到 Android Studio。