01. Rust和Flutter开发环境
Rust开发环境安装,网络顺畅的可以直接官网找链接安装,也可以用rsproxy镜像。
Flutter开发环境安装,也可以按网络条件选择安装方式
安装和环境配置 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 在中国网络环境下使用 Flutter | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter
02. FRB安装使用
flutter_rust_bridge v2版本已经很稳定。 首先安装FRB命令行工具,FRB命令行是以Rust的crate库形式发布的,安装方式:
cargo install flutter_rust_bridge_codegen
然后用flutter_rust_bridge_codegen命令创建新项目(llfile是项目名):
flutter_rust_bridge_codegen create llfile
没有错误输出既表示创建成功。
用Android Studio打开llfile项目,比纯Flutter项目多了不少内容。
主要关注rust目录和lib/src.rust/api目录,其他的大都是胶水相关代码和配置文件。
- rust目录:
这是个rust标准crate库结构,编译出的动态链接库会通过FFI给Flutter代码提供API
simple.rs是个简单示例,新创建的项目默认会在主界面展示此模块产生的内容。
- lib/src.rust目录:
rust目录里通过FFI导出的API会在此目录生成对应的dart可直接调用的API代码
可以看到rust代码里的API(通过frb属性标注的函数),和导出到dart代码里API的函数签名都是一致的。
实际FFI转换过程比较复杂,也相当繁琐,FRB做了比较完善的处理,比如同步异步,Struct和Stream都有完善支持。
最后在界面代码里像引用普通dart代码一样调用到Rust实现的API,整体比较丝滑,默认示例运行展示正常。
03. Tip
开发过程中如果变动的是Rust侧代码,需要通过flutter_rust_bridge_codegen generate --watch来实时监控代码变动自动生成Dart侧API代码
simple.rs是默认示例,新增rust模块时,init_app函数原样复制过去,就可以增加自己的实现逻辑了。