分角色的flutter混合工程方案

混合工程就是原生和flutter集成在一起的方案,官方提供的方案很难解耦令人诟病。更人性化的方案应该是flutter分角色混合工程方案

分角色混合工程方案

站在原生开发的角度很难理解这个命题的存在,因为原生开发人员习惯pod,万物皆可pod,其中就包括了flutter的产物和其依赖。

分角色的意思是分原生开发,flutter开发,构建,三种角色。分别执行不同的脚本。互补影响。构建和flutter开发者可以合并为一个角色。

为了满足原生开发和混合开发者及构建不同角色的诉求,对于原生开发需要在不安装flutter的情况下也能启动flutter开发的页面功能,过渡过程完全无感知。混合开发和构建相同的诉求,就是在原生工程中使用flutter,进行正常的编译运行。

我们目前的方案是将flutter当作一个公共是submodule,供ios和android使用。这种方式可以解决耦合问题。另外桥接代码尽量通用,放到flutter工程中。

重复一遍,flutter相关的东西做成pod,让原生去引用或移除即可。

有了这个原理就可以理解所有的后面的操作了。

有了目标,就分解行动了。首先搞清楚产物有哪些,app.framework,flutter.framework,和其他第三方的依赖。

第二,如何生成flutter构建产物,我们知道使用flutter package / flutter run

第三。第三方的依赖的生成和收集。

很简单吧。

正常的流程是这样的,市面上大多数文章也是这么说的,然而问题看起来并不是如此简单。首先如何解决私有库的问题,如何解决私有库版本依赖问题。

其次,如何保证原生开发和flutter开发互不影响,会不会存在一方提交代码另一方构建不了,不会使用分支管理,实际上这个问题对于flutter开发人员说最大最常见的问题。问题的解决方案很简单,原生直接把flutter不pod即可,flutter在支持了基本的登陆等功能之后可以新开一个稳定分支自己玩。

第三个问题。收集产物和收集依赖,什么时候进行,debug和release分别怎么做,不同开发直接的本地配置会不会影响到其他人。对模拟器的支持必须要jit方式,支持attach也必须要jit

第四个问题,需要考虑企业化构建,需要自己指定flutter版本,执行对应版本的命令进行realese构建

第五,本地开发的缓存问题,本地或远程开发plugin的缓存不会立即更新,即使使用flutter clean也无法清除,此时需要再次删除.ios和.android文件夹。这些操作最好脚本支持,脚本使用最好能极简,最高境界是让双方无感知。

以上。欢迎进群探讨。

扩展阅读 https://juejin.im/post/5dc4b73ae51d4504f0726b46

发表评论

电子邮件地址不会被公开。 必填项已用*标注