闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter知识小报(下)

简介: 闲鱼技术2022年度白皮书-Flutter主题-节日献礼:Flutter知识小报

接上篇:https://developer.aliyun.com/article/1225938?spm=a2c6h.13148508.setting.28.595d4f0eudDbz0


六、 Flutter代码Trim机制的坑

 

我们都知道Flutter中的dart代码在编译过程中,会对没用调用到的代码进行裁剪。这样做的好处是尽可能减少产物的大小。以闲鱼场景为例关闭代码Trim,闲鱼的包大小会增加额外的8M。但是实际开发过程中的一个不起眼的操作,竟然会打入你可能意料之外的代码。

 

image.png


上述代码中dependencyCall所在代码是会在编译期间被trim掉的(如果没有其他任何引用的话)。但是如果代码改成了如下方案,情况就不同了。

 

image.png


由于在编译期间,编译器无法100%确认needSomething变量的值。所以就会将dependencyCall所在代码打入最终的包中。包大小就“意外”变大了。

 

一个非常小的改动,即便最后的值都是false,看起来是逻辑等价。但是“不经意间”却影响了最终打入的代码。

 

七、 Flutter为什么引入EngineGroup

 

众所周知,Flutter最早是面向APP级别进行设计的。但是实际应用过程中,更多的场景是将Flutter纳入现有的APP之中,这时Flutter多实例就是一个无法回避的问题。闲鱼团队之前的解决方案是FlutterBoost,目前也已经开源。本质上是多个页面复用一个Flutter Engine。

 

Flutter 2.0版本中,官方对Flutter多实例场景进行了优化。据官方数据,增加一个新的Flutter实例,只会增加约180K的内存占用。这无疑对多实例场景是一个重大利好。官方数据如下:

 


image.png

image.png


但是这个方案真的那么完美么?目前的EngineGroup方案也有他的一些不足:

 

每个Engine都有自己的Isolate,彼此之间数据独立无法复用。同时不同页面之间的数据通信的成本也大幅提升

每个Engine都有自己的桥通道。需要单独注册和管理

多Engine即便已经大幅优化,考虑到更多的Isolate和数据隔离。真实页面性能成本相比单Engine版本会更高

 

大家可以根据自己业务的实际情况选择使用

 

 

引用

【1】Flutter新一代图形渲染器Impeller

【2】https://github.com/flutter/flutter/wiki/Impeller

【3】https://docs.flutter.dev/development/tools/sdk/release-notes/release-notes-3.3.0

【4】FlutterBoost:https://github.com/alibaba/flutter_boost

 

相关文章
|
3月前
|
SQL 分布式计算 大数据
Flutter技术实践问题之Flutter应用过程中的基础建设如何解决
Flutter技术实践问题之Flutter应用过程中的基础建设如何解决
30 10
|
3月前
|
新零售 前端开发 小程序
Flutter技术实践问题之基于Flutter的Canvas的应用优势如何解决
Flutter技术实践问题之基于Flutter的Canvas的应用优势如何解决
32 2
|
3月前
|
Web App开发 新零售 前端开发
Flutter技术实践问题之阿里集团内Flutter体系化建设如何解决
Flutter技术实践问题之阿里集团内Flutter体系化建设如何解决
39 1
|
3月前
|
Kubernetes Cloud Native 搜索推荐
探索云原生技术:Kubernetes入门与实践打造个性化安卓应用:从零开始的Flutter之旅
【8月更文挑战第31天】云原生技术正改变着应用开发和部署的方式。本文将带你了解云原生的基石——Kubernetes,通过实际的代码示例,从安装到部署一个简单的应用,让你迅速掌握Kubernetes的核心概念和操作方法。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你进入云原生世界的桥梁。
|
6月前
|
Dart 前端开发 测试技术
【Flutter前端技术开发专栏】Flutter开发中的代码质量与重构实践
【4月更文挑战第30天】随着Flutter在跨平台开发的普及,保证代码质量成为开发者关注的重点。优质代码能确保应用性能与稳定性,提高开发效率。关键策略包括遵循最佳实践,编写可读性强的代码,实施代码审查和自动化测试。重构实践在项目扩展时尤为重要,适时重构能优化结构,降低维护成本。开发者应重视代码质量和重构,以促进项目成功。
81 0
【Flutter前端技术开发专栏】Flutter开发中的代码质量与重构实践
|
1月前
|
Android开发 iOS开发 容器
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
鸿蒙harmonyos next flutter混合开发之开发FFI plugin
|
1月前
|
开发者
鸿蒙Flutter实战:07-混合开发
鸿蒙Flutter混合开发支持两种模式:1) 基于har包,便于主项目开发者无需关心Flutter细节,但不支持热重载;2) 基于源码依赖,利于代码维护与热重载,需配置Flutter环境。项目结构包括AppScope、flutter_module等目录,适用于不同开发需求。
74 3
|
16天前
|
传感器 开发框架 物联网
鸿蒙next选择 Flutter 开发跨平台应用的原因
鸿蒙(HarmonyOS)是华为推出的一款旨在实现多设备无缝连接的操作系统。为了实现这一目标,鸿蒙选择了 Flutter 作为主要的跨平台应用开发框架。Flutter 的跨平台能力、高性能、丰富的生态支持和与鸿蒙系统的良好兼容性,使其成为理想的选择。通过 Flutter,开发者可以高效地构建和部署多平台应用,推动鸿蒙生态的快速发展。
128 0
|
18天前
|
Dart 安全 UED
Flutter&鸿蒙next中的表单封装:提升开发效率与用户体验
在移动应用开发中,表单是用户与应用交互的重要界面。本文介绍了如何在Flutter中封装表单,以提升开发效率和用户体验。通过代码复用、集中管理和一致性的优势,封装表单组件可以简化开发流程。文章详细讲解了Flutter表单的基础、封装方法和表单验证技巧,帮助开发者构建健壮且用户友好的应用。
58 0
|
1月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
76 7