在开发fair动态化页面时,使用build_runner构建fair资源产物:
flutter packages pub run build_runner build --delete-conflicting-outputs
Fair为我们提供了AS插件FairTemplate 一键模版工程和一键打包以及开发者选项界面,提供了启动本地fair热更新服务,远程加载fair动态界面的方式进行开发调试,具体操作为: 传送门
但这里可能会出现一个情况就是端口占用,本地服务之前启动过服务比如是启动后电脑系统重启,则会出现:
Kill last process... Pid::67849...
Start local fair server...
>>>>>> 0::INFO::2023-09-08 15:46:30.377459::SocketException: Failed to create server socket (OS Error: Address already in use, errno = 48), address = 0.0.0.0, port = 8080
Unhandled exception:
SocketException: Failed to create server socket (OS Error: Address already in use, errno = 48), address = 0.0.0.0, port = 8080
#0 startServer (file:///Users/xx/Documents/Flutter/faircli/FairServer/bin/server.dart:40)
<asynchronous suspension>
Process finished with exit code 0
此时通过下面命令查找占用端口号的进程:
lsof -i:8080
在找到对应进程ID,kill掉:
kill PID
再次启动服务ok
flutter packages pub run build_runner build --delete-conflicting-outputs
fair产物构建命令默认输出目录是在build/fair目录下面:
如果不使用fairpushy热更新服务,就只使用本地fair资源的方式开发调试动态界面,默认需要手动拷贝产物到项目中,这里介绍一个fair_compiler的一个比较实用的配置:
在当前项目添加 fair_config.json文件:
{
"exportDir":"./assets/fair"
}
exportDir可以填写绝对路径,也可是相对路径
则会自动将build/fair产物拷贝到assets路径下,不用每次手动拷贝,提高开发调试效率