Flutter attach
1.背景
hot-reload
,热重载,允许开发者在应用运行时更改源代码,并实时观看效果。目前SwiftUI
与Flutter
都具备热重载的能力,开发阶段调试UI的效率极高。在原生iOS应用中混编flutter
模块时,原生部分(非SwiftUI的)在修改后还是需要通过重新Run
来查看效果,而其中的 Flutter 部分则是可以基于flutter attach
实现热重载的,本文就简单的做一次配置记录。
2.配置Info.plist
On iOS 14 and higher, enable the Dart multicast DNS service in the Debug version of your app to add debugging functionalities such as hot-reload and DevTools via flutter attach.
配置本地网络使用权限:
1 |
|
上架前须删掉以上配置,否则审核会被拒。
为方便起见,可配置两份Info.plist
,只在开发环境中保留上述配置。
配置步骤:
复制Info.plist文件并分别重命名为
Info-dubug.plist
和Info-release.plist
;在
Info-dubug.plist
中加入上述配置,Info-release.plist
保持原样不变:TARGET->Build Settings 中搜索
INFOPLIST_FILE
,配置如下:Build Settings -> Build Phases -> Copy Bundle Resources中移除多余的plist资源;
3.Run原生应用
运行原生应用并跳转到 flutter 所在模块,以便后面观看热重载后的效果。
4.flutter attach
打开终端,cd到原生项目的flutter模块所在根目录,我的是flutters
:
1 |
|
在Hello/flutters
目录下执行flutter attach
命令:
1 |
|
之后就可以修改 flutter 模块中的代码了,记得保存;
第一次修改完之后,终端里输入R
- Hot restart 页面查看效果;
之后再修改时,输入r
- Hot reload 即可查看效果;
5.注意事项:
经测试,APP运行时,第一次修改完Flutter模块后,须在终端输入R
重启才能查看修改效果,输入小写的r
时页面会报错。经过第一次的R
重启后,再修改Flutter模块,直接r
就能正常热加载了。
Run了应用并且执行flutter attach
之后,如果关闭了应用,则终端里会提示”Lost connection to device”,如果再想看Flutter模块修改后的效果,则要重新执行Run
->flutter attach
->R
->r
这一流程。
相关参考: