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增加以下配置 

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

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

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

生成的工程结构如下:

工程目录结构

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

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

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

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

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

Flutter module支持hot reload (热重载)

进入到flutter module目录下

执行命令 flutter attach 即可

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

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

签名打包

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容