探究Flutter与原生混用的最佳方案
2022-02-09 本文已影响0人
dushiling
前置动作
在接入Flutter之前需要具备一下前置条件:
- 易于开发的操作系统(首推macOS)
- 配置Flutter开发环境
- Android和iOS开发环境(参考官网)
接入方案
业内绝大部分的App都不可能推到重来,所以混合工程的方式接入Flutter是目前主流开发模式,下面简单说说下业界两种工程管理模式:
统一管理模式(不推荐)
- 优点
- 适合全新使用flutter开发的项目
- 缺点
- 后期代码耦合严重,相关工具链耗时大幅增长,导致开发效率低
三端分离模式(推荐)
- 优点
- 快速实现Flutter功能“热插拔”,降低原生工程的改造成本
- 可以直接进行Dart代码合原生代码开发调试
思考
而 Flutter 工程通过 Android Studio 进行管理,无需打开原生工程,可直接进行 Dart 代码和原生代码的开发调试。
三端工程分离模式的关键是 工程,将不同平台的构建产物依照标准组件化的形式进行管理,即 、。
换句话说,接下来介绍的混编方案会,这样原生工程就可以快速接入 Flutter了。
集成Flutter准备
当我们创建一个新的Flutter 工程时,除了一些通用配置外,Flutter还包括 Flutter 工程和原生工程的目录(即 iOS 和 Android 两个目录)。在这种情况下,原生工程就会依赖于 Flutter 相关的库和资源,从而无法脱离父目录进行独立构建和运行。
原生工程对 Flutter 的依赖主要分为两部分:
- Flutter 库和引擎,也就是 Flutter 的 Framework 库和引擎库;
- Flutter 工程,也就是我们自己实现的 Flutter 模块功能,主要包括 Flutter 工程 lib 目录下的 Dart 代码实现的这部分功能。
在的情况下,我们需要在创建 Flutter 模块,构建 iOS 和 Android 各自的 Flutter 依赖库。这也很好实现,Flutter 就为我们提供了这样的命令。我们只需要在下,执行 Flutter 命令创建名为 flutter_module(名字随意起) 的模块即可,命令如下。
flutter create --template module flutter_module
目录层级如下:
开始集成
具体操作参考官网:将 Flutter 集成到现有应用
也可参考我的另外两篇文章:
Flutter-module嵌入iOS原生项目
Flutter-module嵌入Android原生项目