Flutter:混编模式下的调试方案

作为软件开发,调试过程必不可少,那么在混编模式下有什么调试方案和技巧呢?我们本地既有原生工程代码,又有 Flutter 工程代码,想要同时调试原生代码和 Flutter 代码,一般有两种方案:

方案一:iOS 和 Flutter 同时调试,不支持断点

① Xcode 打开 iOS 项目,运行项目并打开 Flutter 项目页面。
② Android Studio 打开嵌在 iOS 项目中的 Flutter 项目,控制台选择 Terminal 选项卡。在终端输入命令行:flutter devices,打印出已连接到计算机的设备。

③ 在终端输入如下命令行,后面的是 iPhone 的设备号,这里是模拟器。flutter attach 的作用是将当前Flutter 项目连接到某个正在运行的应用程序上。

flutter attach -d 60BB7784-43BA-4569-871A-3BA6D4E136D0

连接成功后,当我们修改了 Flutter 项目的代码后,可以按照下面的快捷键在终端进行相应操作:

  • r是热重载,局部刷新,刷新所有改动的 Flutter 代码文件,此时就可以看到代码改动后的结果
  • R是热重启,全部刷新,刷新所有的 Flutter 文件。如果 Hot reload 刷新无效,可以尝试使用 Hot restart
  • dq都是终止连接,结束调试

Hot reloadHot restart 区别:

  • Hot reload:将所有代码更改加载到 VM 中,并重新构建 Widget 树,但是不会重新运行 main()initState()
  • Hot restart:同样将所有代码更改加载到 VM 中,然后重新启动 Flutter 应用,从而丢失应用状态。
Performing hot restart...                                               
Restarted application in 680ms.

Performing hot reload...                                                
Reloaded 0 libraries in 107ms (compile: 16 ms, reload: 0 ms, reassemble: 11 ms).

二、iOS 和 Flutter 同时调试,支持断点方案

① Android Studio 打开嵌在 iOS 项目中的 Flutter 项目,工具栏点击 Flutter Attach

此时控制台 Debug 选项卡输出日志信息:

在 Flutter 和 Native 混编的过程,使用 flutter attach 同步代码出现如上错误。这是因为有多个端口,选择其中一个执行就可以了,一般选择不带数字的一个。可以重新运行 XCode 工程或者直接关掉模拟器,重新连接。

Debug service listening on ws://127.0.0.1:61933/-4kIlDugw3g=/ws
Syncing files to device iPhone 14 Pro Max...

连接完成,可以进行断点调试。同样在控制台上边可以通过点击 Hot reloadHot restart 按钮来实现代码修改的更新操作。

当我们想要在 Flutter 侧调试代码的时候,只需要在控制台上打好断点就可以了,等APP运行到断点处时就会自动停止下来,进入断点流程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容