咱们急切须要浏览器渲染引擎/Flutter 渲染引擎的人才,欢迎大牛们_加入咱们_。git
Flutter 能够说是近两年来最火爆的移动跨平台方案,不管是创新型应用仍是老牌旗舰型应用,都在或多或少地尝试 Flutter 技术。基于如下三点优点,Flutter 正在逐渐焕发光彩:github
虽然 Flutter 看起来很是美好,可是它毕竟只是一个有潜力的新生儿。随着业务的逐渐深度使用,业务同窗在 Flutter 上面遇到了一些难以解决的问题,这些问题须要从引擎层面进行优化和改造。因而,U4 内核团队也开始投身到 Flutter 的洪流当中,但愿能经过团队的技术,给业务带来更好的体验。web
为了便于交流和区分,咱们的 Flutter 定制引擎以 Hummer 为代号。Flutter 意为抖动翅膀,Google 寓意流畅的性能,Hummer 即蜂鸟,世界上抖动翅膀最快的鸟,也是最小的鸟。咱们但愿 U4 内核团队定制的 Flutter 引擎,能够像蜂鸟同样小巧迅捷,同时又能够帮助业务开发出如蜂鸟同样漂亮的应用。浏览器
Hummer 引擎以业务驱动为核心,结合 U4 内核团队多年的 Web 引擎开发经验,并积极拥抱社区,主要从性能优化、功能加强、配套工具、问题解决四个方面进行深度定制与优化。下文简要介绍了咱们接近完成或已经完成的优化成果,这些成果咱们后面会陆续在公众号上与读者分享,敬请关注。安全
基于 LLVM 的 AOT 编译器性能优化
虽然 Dart AOT 产物作了极致的优化,使得它的运行性能能够媲美 Java、C++ 等老牌语言,可是整个编译流水线仍然有优化空间。咱们经过对 Dart 编译器进行改造,利用 LLVM 编译器生成代码尺寸小性能高的特色,能够有效地减小引擎产物尺寸,而且提升代码运行性能。markdown
咱们的目标是:网络
目前 arm3二、arm64 已经经过全部测试,正在进入最后的优化阶段,很快就能够接入使用。ide
目前官方也在关注咱们编译器的优化工做,但愿达到效果后能贡献给社区。工具
混合栈开发方案优化
虽然 Flutter 官方支持与 Native 应用混合开发,可是到目前为止,Flutter 对混合开发的支持仍然不够友好,它存在的一些问题,一直是开发者心中的剧痛。混合开发主要体如今三个场景:
针对第一个场景,咱们经过挖洞混合渲染方式,解决原生混合渲染方案性能、兼容性差的问题。测试场景下,FlutterView 帧率最高有 28% 的优化、嵌入的 PlatformView 帧率最高有 50% 的优化。
如下视频中,左侧是优化前的效果,右侧是优化后的效果。
针对第二个场景,现有的主流方案经团队评估后发现存在着后续升级难的问题。后续 Hummer 除了参考现有方案提供类似的能力外,还会着重考虑如何下降 Hummer 的升级成本,确保 Hummer 有能力紧随官方的最新版本。针对第三个场景,咱们将会结合官方的 Multiple Flutters 方案,开始着手于引擎层面的改造,但愿能够实现下面目标:
启动及首帧性能优化
咱们对 Hummer 引擎的启动和首帧作了针对性的优化。优化后的引擎给实际业务带来了巨大的性能改善。业务实际统计获得的结果为,启动耗时减小80%,首帧耗时减小60%。
自适应的 DarkMode 方案
对标 Chromium 的自适应 DarkMode 方案,实现界面一键切换 DarkMode,不须要从新设计主题,极大提高业务方的研发效率。
下图是咱们使用开源 flutter_deer 工程,增长 DarkMode 扩展语法后运行在 Hummer 上的效果。感兴趣的读者也能够自行查看该工程本身实现的 DarkMode 的效果。
网络库加强方案
Hummer 引擎能够不依赖原生的网络库,经过外接网络库来加强网络能力,实现网络请求速度翻倍。
尽管参与 Flutter 引擎优化时间不长,但 U4 内核团队已经屡次向主线提交 PR,大部分 PR 目前已经合入。咱们但愿经过这种方式,提高阿里巴巴在 Flutter 社区的影响力,也促进整个 Flutter 生态的发展,让 Flutter 为业务方带来更大的价值。
U4 内核团队,专一渲染引擎 & 虚拟机技术十数年。做为阿里巴巴集团经济体共建 Flutter 的重要参与方,积极拥抱社区,力求给业务带来最大化的价值提高。Hummer 是咱们深度定制优化的 Flutter 引擎,融合了团队在 Web 引擎上的多年技术沉淀。欢迎从事相关技术研究或基于 Flutter 构建应用的同窗提出宝贵的意见或建议。
U4 内核致力于打造性能最好、最安全的 web 平台,让 web 无所不能。
关注公众号请搜索 U4内核技术,即时获取最新的技术动态