likes
comments
collection
share

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

作者站长头像
站长
· 阅读数 15

对于 Flutter 应用开发,使用 Dart 和 VS Code 或 JetBrains IDE 很容易设置开发和调试环境。

然而,在 Flutter 中使用 C/C++ 时,情况有所不同,因为官方的 Dart 和 Flutter IDE 插件并非为 C/C++ 开发而设计。

为了在多个操作系统上开发和调试 C/C++ 项目,我们需要为每个平台配置和设置不同的 IDE,如下所示:

C/C++ 项目有很多开发环境可供选择。我们可以使用 Xcode 进行 iOS 和 macOS 开发,使用 Android Studio 进行 Android 开发,使用 Visual Studio 进行 Windows 开发,并使用其他 IDE 工具进行 Linux 平台开发。

根据我的个人经验,我最常使用的最佳开发 IDE 是 JetBrains 的 CLion,它在各个平台上提供了一致的开发体验。

对于在 Flutter 应用中使用 C/C++ 的开发人员来说,通常会在不同平台上部署和共享相同的代码库,这些平台拥有各种操作系统和 CPU 架构。使用相同的 IDE 可以让您更方便地重用这些工具的使用经验。

在 CLion 中配置您的 C/C++ 项目

CLion 对 CMake 项目有内置支持。要使用 IntelliSense 配置 CLion,您需要打开包含 CMakeLists.txt 文件的项目文件夹。在我们的示例项目中,这将是 <project_root>/src 目录:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

CLion 将根据您的 CMake 配置自动配置您的 C/C++ 项目。

使用 CLion 调试您的 Flutter 应用

在包括 macOS、Windows 和 Linux 的桌面平台上,使用 CLion 调试 Flutter 应用更容易。

也建议先在桌面上开发您的 C/C++ 代码,然后交叉编译并在移动平台上运行。

使用 CLion LLDB 调试器启动 Flutter 应用

首先,您需要编译您的 Flutter 应用:

flutter build macos --debug

编译完成后,应用程序将生成 在 <project_root>/example/build/macos/Build/Products/Debug/flutter_native_example_example.app 目录下。

对于 Linux 或 Windows 平台,只需在 <project_root>/example/build/ 目录下查找您的 Flutter 应用。

在 CLion 中添加调试器配置

打开 CLion,点击顶部的 Edit Configurations 选项菜单:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

点击左上角的+按钮并选择Native Application

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

移除中下部的默认Build配置,然后点击带有Executable:标签的下拉菜单:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

找到并选择您的 Flutter 应用的可执行文件,位于<project_root>/example/build/目录下。

选择结果如下:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

现在可以准备进行调试了。点击顶部栏的调试图标开始调试:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

使用 CLion 调试器附加运行中的应用程序

如果您的应用程序在 CLion 调试器启动之前已经启动,您可以使用 CLion 的 Attach To Process 功能附加到现有的运行中的 Flutter 应用

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

在 Xcode 中调试 C/C++ 代码

Xcode 是 macOS 和 iOS 平台上调试 C/C++ 的另一种 IDE。首先,在 Xcode 中打开 Runner.xcworkspace 项目。

默认情况下,我们的 C/C++ 代码源代码在 Xcode 中是不可见的,因此我们需要进行额外的设置,使其可见并允许在其上设置断点:

在 Xcode 中,右键单击 Runner 项目并选择 Add Files to "Runner"

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

选择包含CMakeLists.txt的源文件夹,但请记住要取消选择底部的所有目标,因为我们不希望 Xcode 将我们的 C/C++ 代码打包到项目中。

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

现在,我们可以在 Xcode 中设置断点并调试 C++ 源代码:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

在 Android Studio 中调试 C/C++ 代码

Android Studio 支持在 Android 上开发和调试 C/C++ 代码。

对于 Android 的 Flutter 应用,打开 Android Studio 中的 example/android 目录:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

一旦项目在 Android Studio 中完全配置,您将看到您的 C/C++ 代码被 Android Studio 识别和索引。

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

点击顶部的app入口点并选择 "Edit Configuration":

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

确保调试类型设置为 "Dual (Java + Native)" 模式:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

现在,我们的 C/C++ 代码可以在 Android Studio 中开发和调试:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

在 Visual Studio 中调试 C/C++ 代码

Visual Studio 在 Windows 平台上为 C/C++ 提供了强大的开发者体验。

Flutter 项目使用 CMake 生成 Visual Studio 项目模板。

首先,通过运行以下命令编译您的 Flutter 应用:

flutter build windows --debug

这将在 <project_root>/example/build/windows/x64 目录下生成 Visual Studio 项目工作区。打开 Visual Studio 并加载此位置的 ALL_BUILD.vcproj 文件。

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

右键单击解决方案标题并选择Properties

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

Single startup project值更改为flutter_native_example_example

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

打开demo_library文件夹中的 C/C++ 代码文件并设置断点:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

点击Debug->Start Debugging

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

现在调试器应该可以工作了:

如何在 Flutter 项目中调试 C/C++ 代码在 Flutter 中使用 C/C++ 时,官方的开发插件并非为 C

查看演示并亲自尝试

本文中的所有代码都位于此 GitHub 仓库中:

github.com/andycall/Th…

下一章节

在下一章节中,我们将重点介绍 Flutter 应用中的 Dart FFI,涵盖双向同步和异步调用、复杂数据结构处理以及性能优化技巧。

转载自:https://juejin.cn/post/7412505754378731520
评论
请登录