在实际开发过程中,为了满足项目业务方面以及兼容历史代码等方面,经常会采取 Flutter 功能模块以 aar 或 Module 等引入方式;而 Flutter Code 代码是与 Android / iOS Native Code 区分为两个工程的;此时若需要调试应该怎么处理呢?
Android
小菜目前主要从事 Android 开发,日常用的最多的是 Run / Debug 跟踪运行项目,而目前 Flutter Module 作为 Native Project 的子模块,直接 Run / Debug 会把 Flutter Module 当作一个新的 Project 运行;
此时需要通过 Flutter Attach 方式在 AndroidStudio 与设备之间建立 Socket 连接,之后便可以对 Flutter Code 进行调试;
- Flutter Attach 运行 Flutter Code;此时等待连接 Waiting for a connection from Flutter on Redmi K30 5G...
- 运行安装 Android Native apk;
- 与设备同步连接之后便可进行断点调试,此时 hot reload 非常便捷;
若打开了 Native app 之后 Flutter Attach 仍旧一直卡在连接设备 Waiting for a connection from Flutter on... 可以尝试杀掉 app 重新进入 app 即可;
iOS
采用 Flutter 跨平台技术,若对原生 Android / iOS 技术都有了解会便利很多;然而小菜对于 iOS 是一窍不通,那如何在 iOS 设备上调试 Flutter Code?
小菜请教 iOS 同学,主要有两种方式:第一种是完全按照 iOS 开发流程,配置环境,更新运行 Native iOS Code,之后 Flutter Attach 调试 Flutter Code;第二种是编译一个模拟器适用的 Debug 包,直接在模拟器安装,之后再通过 Flutter Attach 进行调试;
- 确定已安装 Xcode 开发工具;
- 打开 Xcode - Simulator 安装 iOS 同学预先提供的 Debug 包;
- Flutter Attach 运行 Flutter Code,与 Android 相同,与设备同步连接之后便可进行断点调试;
小菜刚装好 Xcode 之后,通过 AndroidStudio 打开 Open iOS Simulator 一直没反应,查阅资料之后发现需要预先开通 Xcode 权限;
// switch 后为 Xcode Developer 路径
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer/
小菜测试 Android 和 iOS 触发时机略有不同;Android 一般是先 Flutter Attach 之后再冷启动 app 而 iOS 可以先运行 app 然后直接 Flutter Attach;但对我们测试影响不大;
小菜对 Flutter 的学习和应用还处于基础阶段;如有错误,请多多指导!
来源: 阿策小和尚