44 | 如何构建自己的Flutter混合开发框架(二)?
陈航
该思维导图由 AI 生成,仅供参考
你好,我是陈航。
在上一篇文章中,我从工程架构与工作模式两个层面,与你介绍了设计 Flutter 混合框架需要关注的基本设计原则,即确定分工边界。
在工程架构维度,由于 Flutter 模块作为原生工程的一个业务依赖,其运行环境是由原生工程提供的,因此我们需要将它们各自抽象为对应技术栈的依赖管理方式,以分层依赖的方式确定二者的边界。
而在工作模式维度,考虑到 Flutter 模块开发是原生开发的上游,因此我们只需要从其构建产物的过程入手,抽象出开发过程中的关键节点和高频节点,以命令行的形式进行统一管理。构建产物是 Flutter 模块的输出,同时也是原生工程的输入,一旦产物完成构建,我们就可以接入原生开发的工作流了。
可以看到,在 Flutter 混合框架中,Flutter 模块与原生工程是相互依存、互利共赢的关系:
Flutter 跨平台开发效率高,渲染性能和多端体验一致性好,因此在分工上主要专注于实现应用层的独立业务(页面)的渲染闭环;
而原生开发稳定性高,精细化控制力强,底层基础能力丰富,因此在分工上主要专注于提供整体应用架构,为 Flutter 模块提供稳定的运行环境及对应的基础能力支持。
那么,在原生工程中为 Flutter 模块提供基础能力支撑的过程中,面对跨技术栈的依赖管理,我们该遵循何种原则呢?对于 Flutter 模块及其依赖的原生插件们,我们又该如何以标准的原生工程依赖形式进行组件封装呢?
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了构建自己的Flutter混合开发框架的相关内容,从工程架构与工作模式两个层面介绍了设计Flutter混合框架需要关注的基本设计原则。在工程架构维度,需要将Flutter模块与原生工程各自抽象为对应技术栈的依赖管理方式,以分层依赖的方式确定二者的边界。在工作模式维度,需要从Flutter模块构建产物的过程入手,抽象出开发过程中的关键节点和高频节点,以命令行的形式进行统一管理。文章还介绍了Flutter模块与原生工程的相互依存、互利共赢的关系,以及在原生工程中为Flutter模块提供基础能力支撑的原则和网络插件依赖管理实践。文章详细介绍了如何封装构建产物,包括iOS和Android构建产物的封装过程,以及处理插件依赖的方法。通过本文,读者可以了解到构建自己的Flutter混合开发框架所需的关键步骤和技术要点,为他们在实践中构建类似框架提供了有益的指导。文章内容涉及混合工程的原生依赖管理、网络插件依赖管理等技术特点,对于想要构建自己的Flutter混合开发框架的读者具有一定的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》,新⼈⾸单¥59
《Flutter 核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(9)
- 最新
- 精选
- 天空依赖插件为git时能声明分支或者tag版本什么的吗?
作者回复: 分支名、tag名、commit都是可以的: dependencies: XXXX: git: url: git://github.com/cyndibaby905/XXXX.git ref: some-branch or some-tag or commit
2019-10-081 - 天空flutter module中.android 是自动生成的, 打包aar有什么意义? 一个flutter project可以打成aar 集成到原生工程里面吗?
作者回复: 1.module打包成aar就可以以原生技术栈的方式集成到现有app啊; 2.不行,需要改成module
2019-12-12 - Element老师好, 模块工程依赖插件配置这块: flutter_plugin_network: git: url: https://github.com/cyndibaby905/44_flutter_plugin_network.git 平时开发就需要将插件上传到github然后这样配置依赖吗? 能不能直接在本地依赖插件?
作者回复: 可以的哦,本地路径、git地址和版本的方式都可以,具体可以参考第18篇分享
2019-10-08 - 学会〆忘记老师你好,我想问下iOS工程中的App.framework和类似fluttertoast,只能从Flutter工程里面拷贝出来吗?有没有好一点的方法,因为我iOS工程已经是组件化了,我现在把Flutter当成了其中一个子组件2020-06-081
- 时光念你拿iOS来说吧,定义一个单例plugin,每次flutter调用native,都去调用单例plugin,flutter的arguments参数会传递一个map对象,包含methodName和自定义的arguments。iOS端利用runtime,通过注册机制,将methodName和某一个class进行关系绑定,存入单例plugin对象内部。当flutter调用native,iOS端就会初始化一个对应的class实例对象并把参数和resultBlock传递给它,当该对象执行完毕之后,调用resultBlock把结果回传给flutter。2019-12-281
- Geek_Javy混编的项目编译很慢啊,目前我的android项目编译一次十分钟有没有方法可以优化一下?2021-06-17
- Geek_cc0a3b这种架构应该是由三个项目:native、flutter module、flutter plugin,如何debug呢,比如从native层debug到flutter plugin,没成功。2021-05-11
- 肖flutter 调用腾讯Tim 发送视频,原生怎么把进度传回给flutter的每一个message呢?请老师指教2020-05-19
- 骑着🚀看银河老师你好,有flutter完整实践一个App的经验吗,一个小的项目也可以,但是需要把常见的功能搞定,或者推荐一个这样的案例学习也可以2020-05-06
收起评论