0%

Flutter调研

简介

Flutter 是 Google 公司2018年2月27日发布的第一个开源跨平台软件开发工具包 (SDK),支持Android、iOS两个平台,可实现高性能、高保真的应用程序开发。开发者借助 Flutter 开发平台可轻松实现自己的应用,其开发框架默认支持了 Material(类似 Google 设计风格)和 Cupertion(类似 iOS 设计风格)两种风格,且无论从UI样式、用户体验上都非常接近原生应用。经过近7个月的优化改进2018年9月19日 Google 公司在上海正式发布非常接近1.0正式版本的 Flutter Release Preview 2,基于其优越性能 Flutter 有望成为未来应用开发的主流工具。

特性

  • 跨平台:当前支持iOS、Andorid、Web、Desktop、嵌入式;
  • 热重载:无需重新启动应用程序的情况下快速、轻松地测试、构建用户界面、添加功能以及修复错误;
  • 响应式框架:这个无需多言;
  • 原生级体验:得益于Google在每个平台都分别实现一套UIKit,使得Flutter在体验上跟原生无异;
  • 平台互操作:可调用平台API、第三方SDK和本机代码,实现混编;

框架

上层基于Dart的Framework构成,包含一系列常用的API,例如widget、Animation,我们的调用大部分在这一层;
下层是基于C++实现的,包含了渲染引擎(Skia)、Dart语言解析、文本处理等;
由于底层是C++,Flutter最终会编译为原生代码,使用原生的指令集;
Flutter官方框架图

另外Flutter直接使用Skia引擎渲染,Skia已广泛应用于Chrome、Chrome OS、Android等平台,其能够控制渲染帧数,从而实现高帧速率。
Flutter图像渲染通道架构图

对比

与当前一些跨平台解决方案对比如下图:
跨平台开发框架对比
ReactNative /Weex将 JSX 生成的代码最终都渲染成原生组件,JS 与原生通过 JSBridge 传递数据,而 Flutter 则采用完全不同的设计,底层是一套独立的渲染引擎–Skia,所有组件也都是独立于平台的 Widget 组件,可以在最大程度上保证了跨平台体验的一致性

商用

当前真正把Flutter商用的大公司并不多,最大的支持者就是淘宝的咸鱼APP,核心页面都是用Flutter实现,诸如营销活动等页面则还是用weex实现;
其他的较大型的APP还有京东金融、腾讯Now直播等,另外京东和淘宝对外的信息也在尝试接入Flutter,更详细的请看showcase。

参考

Flutter主页
Flutter Git
Flutter框架简介
Flutter商用项目
Dart语言主页
Skia渲染引擎主页