美文网首页AndroidFlutter
探究Flutter与原生混用的最佳方案

探究Flutter与原生混用的最佳方案

作者: dushiling | 来源:发表于2022-02-09 01:49 被阅读0次

前置动作

在接入Flutter之前需要具备一下前置条件:

  1. 易于开发的操作系统(首推macOS)
  2. 配置Flutter开发环境
  3. Android和iOS开发环境(参考官网)

接入方案

业内绝大部分的App都不可能推到重来,所以混合工程的方式接入Flutter是目前主流开发模式,下面简单说说下业界两种工程管理模式:

screenshot.png

统一管理模式(不推荐)

  • 优点
    • 适合全新使用flutter开发的项目
  • 缺点
    • 后期代码耦合严重,相关工具链耗时大幅增长,导致开发效率低

三端分离模式(推荐)

  • 优点
    • 快速实现Flutter功能“热插拔”,降低原生工程的改造成本
    • 可以直接进行Dart代码合原生代码开发调试

思考

而 Flutter 工程通过 Android Studio 进行管理,无需打开原生工程,可直接进行 Dart 代码和原生代码的开发调试。

三端工程分离模式的关键是\color{Teal}{抽离 Flutter} 工程,将不同平台的构建产物依照标准组件化的形式进行管理,即 \color{orange}{Android 使用 aar}\color{ purple}{iOS 使用 pod}
换句话说,接下来介绍的混编方案会\color{ blue}{将 Flutter 模块打包成 aar 和 pod},这样原生工程就可以\color{OrangeRed}{像引用其他第三方原生组件库那样 }快速接入 Flutter了。

集成Flutter准备

当我们创建一个新的Flutter 工程时,除了一些通用配置外,Flutter还包括 Flutter 工程和原生工程的目录(即 iOS 和 Android 两个目录)。在这种情况下,原生工程就会依赖于 Flutter 相关的库和资源,从而无法脱离父目录进行独立构建和运行。

原生工程对 Flutter 的依赖主要分为两部分:

  • Flutter 库和引擎,也就是 Flutter 的 Framework 库和引擎库;
  • Flutter 工程,也就是我们自己实现的 Flutter 模块功能,主要包括 Flutter 工程 lib 目录下的 Dart 代码实现的这部分功能。

\color{green}{已经有原生工程}的情况下,我们需要在\color{brown}{同级目录}创建 Flutter 模块,构建 iOS 和 Android 各自的 Flutter 依赖库。这也很好实现,Flutter 就为我们提供了这样的命令。我们只需要在\color{blue}{原生项目的同级目录}下,执行 Flutter 命令创建名为 flutter_module(名字随意起) 的模块即可,命令如下。

flutter create --template module flutter_module

目录层级如下

image.png

开始集成

具体操作参考官网:将 Flutter 集成到现有应用

也可参考我的另外两篇文章:
Flutter-module嵌入iOS原生项目
Flutter-module嵌入Android原生项目

相关文章

网友评论

    本文标题:探究Flutter与原生混用的最佳方案

    本文链接:https://www.haomeiwen.com/subject/ixzvkrtx.html