如何用 flutter attach 调试现有应用中的 Flutter 模块并支持热重载与断点

如何用 flutter attach 调试现有应用中的 Flutter 模块并支持热重载与断点 如何用 flutter attach 调试现有应用中的 Flutter 模块并支持热重载与断点【免费下载链接】samplesA collection of Flutter examples and demos项目地址: https://gitcode.com/GitHub_Trending/sam/samples当 Flutter 模块被嵌入到一个已有的 Android 或 iOS 宿主应用add-to-app 场景后应用是通过 Android Studio 或 Xcode 构建和运行的Flutter 模块本身的开发调试就需要另一条路径。Flutter samples 仓库的add_to_app示例区域在 add_to_app/README.md 的 Debugging 一节给出了做法在宿主应用运行期间用flutter attach附加到该进程从而获得热重载、断点和 DevTools 等与完整 Flutter 应用一致的调试能力。本文以该 README 及其指向的fullscreen示例为主路径说明如何把宿主应用跑起来、再执行flutter attach以及调试时需要注意的边界。运行前提宿主应用能构建并在模拟器或设备上启动flutter attach的对象是正在运行的宿主应用所以第一步是用各示例 README 给出的流程把宿主应用跑起来。以 fullscreen 示例为例其 Requirements 一节列出的环境要求是FlutterAndroid 侧Android StudioiOS 侧Xcode、Cocoapods。iOS 示例要求最新版 Cocoapodsadd_to_app/README.md 给出的安装命令为在 macOS 上执行sudo gem install cocoapods该命令会通过sudo以管理员权限安装 Ruby gem仅在你尚未安装或版本过旧时执行。下面是fullscreenREADME tl;dr 一节中的 setup 命令按其说明只保留为当前平台准备模块依赖的部分cd flutter_module_fullscreen/ flutter pub get随后按平台分支操作Android在 Android Studio 中打开../android_fullscreen文件夹该 README 在 macOS 上给出的是open -a Android Studio ../android_fullscreen其他平台则在 Android Studio 中打开对应目录构建并运行应用。iOScd ../ios_fullscreen pod install open IOSFullScreen.xcworkspace然后在 Xcode 中点击 Run把应用启动到模拟器或真机上。其他 add-to-app 示例books、plugin、prebuilt_module的启动流程与上述模式一致只是模块目录和宿主工程名不同plugin示例额外包含插件初始化所需的原生代码android_view 则是把模块集成到 Android 视图层级的示例。在应用运行期间执行 flutter attach保持宿主应用在模拟器或设备上运行进入已经加载 Flutter 模块的界面在命令行执行flutter attachadd_to_app/README.md 对此的说明是You canflutter attachto the running host application to debug the Flutter module即把 flutter 工具附加到正在运行的宿主进程上来调试其中的 Flutter 模块。文档没有给出附加参数示例此处按文档原样保留flutter attach命令。验证调试能力是否可用README 对附加成功后的结果描述是This will allow you to hot reload, set breakpoints, and use DevTools and other debugging functionality, similar to a full Flutter app.也就是说验证方式不是检查某段固定日志而是确认以下调试手段已经可用对模块中的 Dart 代码做修改后执行热重载在 Dart 代码中设置断点使用 DevTools 及其他调试功能。文档没有列出flutter attach的具体成功输出或失败报错形态验证时以文档描述的上述能力为准。边界与限制prebuilt module 场景需要重建产物。prebuilt_module/README.md 指出宿主应用导入的是预构建的aarAndroid或 frameworkiOS并且如果flutter_module项目有更新必须重新构建aar这些变更才会出现在应用中。Android 应用按自身构建配置导入对应模式的aar例如构建 debug 版本时会查找 debugaarflutter build aar在该场景下只改模块源码而不重新执行构建命令宿主应用中的表现不会变化也就谈不上调试到最新代码。适用对象。flutter attach的 Debugging 说明位于add_to_app目录的 README 中面向的是模块嵌入现有应用这类 add-to-app 示例独立的完整 Flutter 应用不属于该说明的适用范围。Android 侧构建问题排查。如果升级依赖后 Android 工程构建失败add_to_app/README.md 的 Troubleshooting 一节给出几条已记录的线索出现过 Unknown class version exception 时可尝试通过修改JAVA_HOME调整使用的 Java 版本仍失败时检查构建中引用的 Flutter 代码是否为最新、是否使用了已废弃的插件常见情况涉及 namespace。完成 attach 并确认热重载与断点可用后日常调试即可在修改 Dart 代码 → 热重载和断点进入的循环中进行无需重新走宿主应用的完整构建流程prebuilt 场景除外见上。【免费下载链接】samplesA collection of Flutter examples and demos项目地址: https://gitcode.com/GitHub_Trending/sam/samples创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考