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

現在,凡是您的程式碼中包含 FlutterActivityFlutterViewController 的地方,Flutter 都會為其提供支援。

概述

#

您可能習慣於在執行 flutter run 或 IDE 中的等效命令時使用一套您喜歡的 Flutter 除錯工具。但在 add-to-app 場景下,您也可以使用所有 Flutter 除錯功能,例如熱過載、效能覆蓋、DevTools 以及在 add-to-app 中設定斷點。

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

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

從終端除錯

#

要從終端進行附加,請執行 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 應用目錄,請前往 **檔案** > **開啟資料夾...**,然後選擇 my_app 目錄。

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

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

    前往 **檢視** > **命令面板...**

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

  4. 鍵入 flutter select

  5. 點選 **Flutter: Select Device** 命令。

  6. 選擇您的目標裝置。

  7. 點選除錯圖示(VS Code 的 bug 圖示,用於觸發 Flutter 應用的除錯模式)。這將開啟 **除錯** 窗格並啟動應用。等待應用在裝置上啟動,並等待除錯窗格顯示 **已連線**。偵錯程式首次啟動時會花費更長時間。後續啟動會更快。

    此 Flutter 應用包含兩個按鈕:

    • 在瀏覽器中啟動:此按鈕會在您裝置的預設瀏覽器中開啟此頁面。
    • 在應用中啟動:此按鈕會在您的應用內開啟此頁面。此按鈕僅適用於 iOS 或 Android。桌面應用會啟動瀏覽器。
啟用自動附加
#

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

  1. 前往 **檢視** > **執行**。

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

    VS Code 會顯示 **執行和除錯** 邊欄。

  2. 在此邊欄中,點選 **建立 launch.json 檔案**。

    VS Code 會在頂部顯示 **選擇偵錯程式** 選單。

  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. 要附加,請前往 **執行** > **開始除錯**。

    你也可以按 F5

在 Xcode 中附加到 Flutter 程序
#

要在 Xcode 中附加到 Flutter 應用

  1. 前往 **除錯** > **附加到程序** >

  2. 選擇 **Runner**。它應該在 **可能的 targets** 標題下的 **附加到程序** 選單的頂部。

首先使用 Xcode 開始除錯

#

如果您使用 Xcode 除錯大部分程式碼,請從本節開始。

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

  2. 在工具欄中使用 **Scheme** 選單選擇正確的裝置。

    如果沒有偏好,請選擇 **iPhone Pro 14**。

  3. 像往常一樣在 Xcode 中執行此 Runner。

    執行完成後,Xcode 底部的 **除錯** 區域會顯示一條訊息,其中包含 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. 要開啟命令面板,請前往 **檢視** > **命令面板...**

    您也可以按下 Cmd + Shift + P

  2. 鍵入 debug

  3. 點選 **Debug: Attach to Flutter on Device** 命令。

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

在 Android Studio 中除錯 Android 擴充套件

#
  1. 要開啟 Flutter 應用目錄,請前往 **檔案** > **開啟...**,然後選擇 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

Arguments Passed On Launch with an IPv4 network added
已新增 IPv4 網路的啟動時傳遞引數

要確定您是否連線到 IPv6 網路

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

  2. 點選您連線的網路。

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

  4. 點選 **TCP/IP**。

  5. 檢視 **IPv6 address**(IPv6 地址)部分。

WiFi dialog box for macOS System Settings
macOS 系統設定的 WiFi 對話方塊

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

#

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