1.1.6 Native 启动下的Flutter 热重载
启动App,进入Flutter 页面,查找Observatory 端口x 和认证码y。
在Flutter 工程目录下, 执行flutter attach --debug-uri=http://127.0.0.1:x/y/。
kylewong@KyleWongdeMacBook-Pro fwn_idlefish % flutter/bin/flutter
attach --debug-uri=http://127.0.0.1:63515/2T0iU5TV0As=/
[KWLM]: [attach, --debug-uri=http://127.0.0.1:63515/2T0iU5TV0As=/]
Syncing files to device KyleWong's iPhone...
To hot reload changes while running, press "r". To hot restart (and
rebuild state), press "R".
An Observatory debugger and profiler on KyleWong's iPhone is available
at:
http://127.0.0.1:63515/2T0iU5TV0As=/
For a more detailed help message, press "h", To detach, press "d";
to quit, press "q".
修改Dart 源代码,然后在Terminal 中输入r(位于'to quit,press"q"'之后)。
new Padding(
padding: new EdgeInsets.only(left: 22.0),
child: createButton(
videoIsFullScreen,
{
'foreground': 'fundetail_superfavor_white',
'background': 'super_favor_unhighlight'
},
'super_favor_highlight',
'赞',
buttonSelectedStatus['superfavor'], () {
superLikeComponent.clickV2(widget.itemInfo.itemId,
widget.itemInfo.userId, widget.itemInfo.fishPoolId,
widget.itemInfo.superFavorInfo.superFavored,
widget.itemInfo.trackParams);
}),
)
这里将超赞文案换成了“赞”。可以看到Terminal 显示"Initializing hot reload...Reloaded...",结束后,设备上变更生效,左下角文案变成了“赞”,如图1-11 所示。
在Android 中,Native 启动的Flutter 调试和热重载与iOS 类似,不同的是可通过IDE Logcat 或者ADB Logcat | grep Observatory 获取端口,端口转发使用ADB forward。
图1-11
1.1.7 Native 与Flutter 联合调试
除了可以在任意时刻(Flutter 启动后)调试Flutter,还可以使用Android Studio 的Attach Debugger to Android Process 调试Android,这就实现了Android 与Flutter 联调。同样,结合Xcode 的Attach to Process,可以实现iOS 与Flutter 联调。
1.1.8 持续集成
闲鱼团队有Native 开发人员和Flutter 开发人员,因此区分了Flutter模式和Native 模式。有一台公共设备(Mac Mini)安装了Flutter 环境并负责Flutter 相关的构建,构建好的产物以AAR(Android)或Pod 库(iOS)的形式集成到Native 工程下(可以认为Flutter 相关的代码就是一个模块),用于构建最终产物APK(Android)或IPA(iOS)的CI 平台最终也通过产物方式集成Flutter 并打包。