iOS flutter混编调试

调试你的 Add-to-App Flutter 模块

当你已经将 Flutter 模块集成到你的项目中,并使用 Flutter 的平台 API(如 FlutterActivityFlutterViewController)来运行 Flutter 引擎和/或 UI 后,你就可以像运行普通 Android 或 iOS 应用一样构建和运行你的应用。

在你的代码包含 FlutterActivity(Android)或 FlutterViewController(iOS)的地方,Flutter 就会驱动 UI。

概述

你可能已经习惯了在运行 flutter run 或从 IDE 中启动应用时,能使用一整套熟悉的 Flutter 调试工具。

好消息是,在 add-to-app 场景下,你同样可以使用所有 Flutter 调试功能,例如:

  • 热重载(Hot Reload)
  • 性能叠加层(Performance Overlays)
  • DevTools
  • 在 Dart 代码中设置断点

实现这一切的关键命令是 flutter attach。你可以通过 Flutter SDK 的命令行工具、VS Code、IntelliJ IDEA 或 Android Studio 来运行此命令。

工作原理flutter attach 命令会在你运行 FlutterEngine 后进行连接,并一直保持连接状态,直到你释放(dispose)该引擎。你甚至可以在启动引擎之前就先执行 flutter attach 命令,它会等待下一个可用的由你的引擎托管的 Dart VM。


从终端进行调试

  1. 在你的 Flutter 模块目录下,运行以下命令:
    $ flutter attach
    
  2. 如果你想指定特定的目标设备,可以加上 -d <设备ID> 参数:
    $ flutter attach -d <deviceId>
    

成功连接后,命令行会输出类似以下的信息:

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 扩展

第一步:使用 Xcode 启动调试器

如果你主要使用 Xcode 进行开发,请按以下步骤操作:

  1. 从你的 Flutter 应用目录中打开 ios/Runner.xcworkspace
  2. 使用工具栏中的 Scheme 菜单选择正确的设备(例如 iPhone 15 Pro)。
  3. 像运行普通 App 一样在 Xcode 中运行 Runner 目标。
  4. 运行完成后,Xcode 底部的 Debug Area 会显示一条包含 Dart VM 服务 URI 的消息,格式如下:
    flutter: The Dart VM service is listening on http://127.0.0.1:50642/00wEOvfyff8=/
    
  5. 复制这个 URI

第二步:在 VS Code 中连接到 Dart VM

  1. 打开 VS Code 的命令面板(View > Command Palette 或快捷键 Cmd+Shift+P)。
  2. 输入 debug 并选择 Debug: Attach to Flutter on Device 命令。
  3. 在弹出的输入框中,粘贴你从 Xcode 复制的 Dart VM 服务 URI,然后按回车。

现在,你就可以在 VS Code 中享受完整的调试体验了,包括热重载、断点和变量检查。


在 Android Studio 中调试 Android 扩展

  1. 在 Android Studio 中,通过 File > Open... 打开你的 Flutter 应用目录(例如 my_app)。
  2. 打开 lib/main.dart 文件。
  3. 选择一个虚拟 Android 设备:
    • 在工具栏最左侧的下拉菜单中,点击 Open Android Emulator: <device>
    • 请选择一个已安装的、不包含 arm64 的模拟器(推荐使用 x86_64 架构)。
  4. 从同一个菜单中,选择你刚刚打开的虚拟设备。
  5. 从工具栏点击Run main.dart

此时,你已经可以在 Android Studio 中直接使用 flutter attach 功能,或者通过 IDE 的调试按钮进行附加调试。


无 USB 连接的调试(通过 Wi-Fi)

你也可以通过 Wi-Fi 调试你的 iOS 或 Android 设备上的应用,只需使用 flutter attach 即可。

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

  1. 首先,确保你的 iOS 设备已按照 iOS 设置指南 的说明,配置为可通过 Wi-Fi 连接到 Xcode。
  2. 在 macOS 开发机上,打开 Xcode,进入 Product > Scheme > Edit Scheme(或使用快捷键 Cmd+<)。
  3. 点击 Run,然后选择 Arguments 标签页。
  4. Arguments Passed On Launch 部分,点击 + 号添加一个新参数:
    • 如果你的开发机使用 IPv4 网络,添加:
      --vm-service-host=0.0.0.0
      
    • 如果你的开发机使用 IPv6 网络,添加:
      --vm-service-host=::0
      

如何判断你的网络是 IPv6?

  1. 打开 系统设置 > 网络
  2. 点击你当前连接的网络。
  3. 点击 详细信息...
  4. TCP/IP 部分,查看是否有 IPv6 地址
    image.png

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

请确保你的 Android 设备已按照 Android 设置指南 的说明,配置为可通过 Wi-Fi 连接到 Android Studio。


完成以上任一设置后,你就可以在没有 USB 线缆的情况下,通过 flutter attach 命令连接到设备并进行调试了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容