Android工程接入Flutter module

该篇文章介绍在已有Android工程中嵌入flutter module,以达到混合开发,前提是已经配置好flutter开发环境,配置请参考https://flutterchina.club/setup-macos/

创建Flutter module

在当前project下 运行命令 

flutter create -t module my_flutter(my_flutter为生成的flutter module名称)

增加配置代码

(1) 在工程的settings.gradle增加以下配置 

Android工程接入Flutter module_第1张图片

(2)在app (假如你的Android应用名称为app)的build.gradle文件下dependencies增加如下依赖

其中flutter工程为创建Flutter module过程自动生成的,注意就是flutter,b

注意 其中 minSdkVersion 需要至少为16,否则会报错

生成的工程结构如下:

Android工程接入Flutter module_第2张图片
工程目录结构

在Android工程中创建Flutter的UI(调用Flutter中的dart编写的widget)

 Flutter提供两种方法引入,一种是View,一种是Fragment,View如下

Android工程接入Flutter module_第3张图片

其中,第二个参数是Lifecycle对象, 第三个参数为route,这个参数Flutter端可以通过window.defaultRouteName获取,利用它flutter可知道要创建哪个widget.

同理 Flutter.createFragment(String route)可生成FlutterFragment

顺便说明下在运行后会发现有白屏的情况,是因为在debug模式下运行的原因,无需理会,最终发布release模式下会很快的

Flutter module支持hot reload (热重载)

进入到flutter module目录下

执行命令 flutter attach 即可

Android工程接入Flutter module_第4张图片

如上就说明连接成功,只要有改动,键盘敲击R或者r 即可看到更改

如果你运行命令后一直在waiting,可尝试杀死该应用进程后再重启,进入相关Flutter页面就可连接上了

签名打包

引入Flutter module后,对原生工程构建基本没影响,按常规操作即可, 编译模式可参考之前我写的文章Flutter编译模式

官方文档:https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps

你可能感兴趣的:(Android工程接入Flutter module)