跳至主要内容

调试您的添加到应用模块

将 Flutter 模块集成到您的项目中并使用 Flutter 的平台 API 运行 Flutter 引擎和/或 UI 后,您可以像运行普通 Android 或 iOS 应用一样构建和运行您的 Android 或 iOS 应用。

现在,无论您的代码包含 FlutterActivityFlutterViewController 哪里,Flutter 都会驱动 UI。

概览

#

您可能习惯于在运行 flutter run 或 IDE 中的等效命令时使用您喜欢的 Flutter 调试工具套件。但是,您也可以在添加到应用场景中使用所有 Flutter 调试功能,例如热重载、性能覆盖、DevTools 以及设置断点。

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".
An Observatory debugger and profiler on iPhone 15 Pro is available at:
http://127.0.0.1:65525/EXmCgco5zjo=/
For a more detailed help message, press "h".
To detach, press "d"; to quit, press "q".

在 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: 选择设备**命令。

  6. 选择您的目标设备。

  7. 点击调试图标(VS Code 的错误图标,用于触发 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**。它应该位于**连接到进程**菜单顶部,位于**可能的目标**标题下。

先使用 Xcode 开始调试

#

如果您使用 Xcode 调试大部分代码,请从此部分开始。

启动 Xcode 调试器
#
  1. 从您的 Flutter 应用目录打开 ios/Runner.xcworkspace

  2. 使用工具栏中的**方案**菜单选择正确的设备。

    如果您没有偏好,请选择**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. 点击**调试: 连接到设备上的 Flutter**命令。

  4. 在**粘贴 VM 服务 URI**框中,粘贴您从 Xcode 复制的 URI 并按 Enter

在 Android Studio 中调试 Android 扩展

#
  1. 要打开 Flutter 应用目录,请转到**文件** > **打开...** 并选择 my_app 目录。

  2. 打开 lib/main.dart 文件。

  3. 选择一个虚拟 Android 设备。转到工具栏,打开最左边的下拉菜单,然后点击**打开 Android 模拟器: <device>**。

    您可以选择任何已安装的模拟器,但不要包含 arm64 的模拟器。

  4. 从同一菜单中,选择虚拟 Android 设备。

  5. 从工具栏中,点击**运行 'main.dart'**。

    您也可以按 Ctrl + Shift + R

    应用在模拟器中显示后,继续执行下一步。

无需 USB 连接进行调试

#

要在 iOS 或 Android 设备上通过 Wi-Fi 调试您的应用,请使用 flutter attach

在 iOS 设备上通过 Wi-Fi 进行调试

#

对于 iOS 目标,请完成以下步骤

  1. 验证您的设备是否已通过 Wi-Fi 连接到 Xcode,如iOS 设置指南中所述。

  2. 在您的 macOS 开发机器上,打开**Xcode** > **产品** > **方案** > **编辑方案...**。

    您也可以按 Cmd + <

  3. 点击**运行**。

  4. 点击**参数**。

  5. 在**启动时传递的参数**中,点击**+**。

    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. 打开**设置** > **Wi-Fi**。

  2. 点击您已连接的网络。

  3. 点击**详细信息...**

  4. 点击**TCP/IP**。

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

WiFi dialog box for macOS System Settings
macOS 系统设置的 Wi-Fi 对话框

在 Android 设备上通过 Wi-Fi 进行调试

#

验证您的设备是否已通过 Wi-Fi 连接到 Android Studio,如Android 设置指南中所述。