「回顾2022,展望2023,我正在参与2022年终总结征文大赛活动」
2022年,对我来说是重要的一年。
在之前并没有什么明确的技术发展方向,做过前端(Vue、小程序)、后端(Java、.Net)、移动端(iOS) ... 多多少少的算一个全栈。但其实技术上是割裂的,带来的更多是倦怠感,倦怠多了更想躺着[手动狗头]。
登太行
转变是在今年3月,由于公司一些历史原因和战略调整,重心转向了降本增效。那对于移动端来说,在 UI 开发上如何做到“降本增效”就是一个很大的问题。当时 owner 跟我讨论了这个问题,想找一种合适的方案能“逐步”替换掉 Native UI 开发的页面,减少一端的开发人力同时,又对性能没有太大影响。
那能选择的不多,甚至只有一个 Flutter。 我们项目很早就在用 Flutter 做 add to App 的混合开发了,但也都是一些不算复杂的页面,对于逻辑及布局都较复杂的“编辑器”模块来说,重新用 Flutter 开发页面等于抛弃以前的积(shi)累(shan)重写,这没个几个月时间 all in,是根本搞不定的,也不符合公司的战略。
在这个前提下,3月份技术上预研了一波(也就是草率的2、3天),找到了 multiple-flutters Flutter 多引擎,从此以后开始了相互伤害之路。
现在想想,确实草率了,当时 Flutter 语法都没看完,只是研究了一下多引擎的官方 multiple_flutters Demo 觉得这玩意儿能搞,可以把 Flutter 作为单独的 UIView 来使用,就草率的定了自己的下个双月 OKR:探索跨端 UI 组件化,降低 UI 还原稿成本。
多歧路
多草率?基本起步就熄火了。
Flutter 多引擎放到公司项目里一直白屏,怎么也显示不出来 View,这在查了大量 issues 再与 Demo 工程对比后,怀疑是公司项目 Flutter 版本过低的问题,所以第一步是要升级 Flutter 版本。
这也是很有难度的,公司工程一直停留在 Flutter 2.2 是有历史包袱在的,毕竟 Flutter 前几年口碑毁誉参半(现在也是难说),从 Flutter 1.x 升级到 2.2,过程上恶心到了很多同事,且崩溃问题不断,他们已经不再看好 Flutter 了, Flutter 工程上也是年久失修,一堆积(shi)累(shan)。但不改这事就推进不下去,也没有什么 Plan B 可以换,那年终垫个底的希望就很大了。抱着搞坏了就写简历的心态,直接上手莽:
- 升级至 flutter 2.10.5(当时最高版本)
- 修改 flutter_boost 支持 flutter 2.10.5 (当时是 flutter_boost 2,不支持 2.5.3 以上的 Flutter 版本)
- 升级并修改一堆三方库(有些库版本都过了4个大版本,调用方式完全变了)
- 修改 Flutter 语法问题,工程部分支持 null-safe
- ffi 更换配套及架构问题
改的过程,心态真的是碎了一地(特别是对 Android 不熟,问题很难改),但慢慢开始习惯,遇山开山,遇水搭桥,顺应变化。后续再遇到 Flutter 多引擎上的奇奇怪怪问题时,心态已经是风淡云轻,处变不惊,稳如老狗 ...
还有后话,测试通过上线一段后发现,一些崩溃问题消失了,但一些新的问题又出现了。其中最大的问题就是这个解决 Flutter 引起的 iOS 内存崩溃问题,好在同事有找到原因,且刚好 Flutter 发布了修复版本才得以解决(这要吐槽一下 Flutter 的版本发布说明 = 没有说明,需要自己去flutter/engine 里找改了啥)。
行路难
技术方案有了,但落地过程中也是重重山隘。由于上文所说的 Flutter 本身问题以及 Flutter developer 在公司里越来越少,大家基本已经不再信任 Flutter 了。那如何推广使用多引擎开发跨端 UI 组件?甚至更为基础的让更多的同学对 Flutter 感兴趣,就显得尤为重要。
这一路也是持续走,基建开发和信心建立并行。
基建上,提供了 FGUIComponentAPI 多引擎组件开发方案,VS Code 开发辅助工具,用 Web 来调试 App 页面等等,抹除开发成本,尽量让开发变得简单,让调试变得快捷。
信心上,尽量对大家有疑虑的问题提供解决方案(嵌套滚动、外接纹理、组件化最佳实践等),解决因 Flutter 带来的崩溃问题,提供测试、线上性能数据来提供结果,让大家接受 Flutter 及 Flutter 多引擎。
这也要感谢 Owner 的支持,现在团队里已经是从大多数人拒绝的状态到一些人已经参与进来,但行好事,莫问前程。
将进酒
对个人收获更大的是理清了自己前进的方向:探索跨端开发架构。
今后不再被语言束缚,用跨端工具链(说到跨端工具链,我们是在说什么?)的方式链接终端/语言/平台,构建更符合未来技术架构的终端产品。
下一步计划准备掺入 Rust,毕竟 Rust 的所有权处理内存问题确实十分优雅,用每个语言的强项打造最适合的架构形态,确实会是一件有意思的事 ~
选一个陡峭的山,再铺出一条平坦的路。
会有时
在掘金的生涯,其实也才3个多月。2022年8月,成为了一名掘金创作者新人,从此开启了文章输出和沸点灌水之路 ~~
截止本文,断断续续的输出了17篇文章,离 Lv4 还有一半的路程,今年的小目标是到 Lv4 获得自动推荐到首页的能力,看起来有点难以完成了。写文章的动力就是有人看,这比奖品什么的更重要。可能大家追求的都是一种认同感,我相信各位掘金大佬也是这样想。这过程中也收获了一些成就,进了9月的月榜名单 ~
生活上比较平淡些,女儿3岁了,健健康康快快乐乐的长大是今年最开心的事。
2021年8月离职去青海大环线自驾了一圈,上图就是在某个无名盐湖拍的,2022年因为工作以及疫情原因一直没出去走走,希望明年可以去趟新疆/西藏,旅游真的是放松心灵的良药 ~
2023年,继续前行,英雄不问出身,技术不分先后,长风破浪,与君共勉。