字节跳动旗下运营着一系列成功的用户产品、企业应用以及服务,覆盖信息、教育、娱乐等不同领域。随着产品阵容的不断发展,传统的原生双平台开发已经难以满足团队更高效、更灵活、更精美,以及更多样的产品研发需求。Google 首次发布 Flutter 的时候,团队就果断决定用手上的 iOS 和 Android 应用来测试其跨平台开发能力,而 Flutter 也用不逊于原生框架的性能表现和极高的生产力迅速征服了团队成员们的心。点击这里 查看开发者故事视频。

Flutter 拥有令人难以置信的超高效率,与原生双端开发相比,Flutter 为我们的团队节省了大约 1/3 的开发时间。

—— 董岩, 字节跳动 Flutter Infra 团队负责人

多平台出击,拥抱更多机遇

在更多的平台上覆盖更多用户一直是字节跳动产品团队的目标之一。比如在中国非常受欢迎的短视频娱乐应用 "抖音火山版",就让 iOS 和 Android 平台的用户都可以通过分享短视频来展示他们的爱好、技能与日常,且拥有非常一致的体验。

△ 抖音火山版

在 2B 领域,字节跳动则有一款支持企业协同办公的一站式应用 Lark,通过音视频会议、文档共享、及一系列项目管理与能效工具来支持团队的即时通讯需求。整个 Lark 的生态系统在 Flutter 的助力下全面覆盖了 iOS、Android、web 端与桌面平台。

△ 协同办公一站式应用 Lark

开发更高效,释放团队创意

热重载 (Hot reload) 一直是 Flutter 最令开发者们称道的开发特性之一,让工程师不再需要一遍遍地等待漫长的编译,从而高效调试代码,快速将 UI 设计师的想法变为现实。

为了让开发者们能最大限度利用各个平台的原生底层功能,Flutter 还提供了外部功能接口 FFI。这使得 Flutter 应用可以直接调用 C++ 层代码,提高与硬件交互的效率,同时实现端上深度学习模型的部署。

"极课错题打印机" 和 "极课阅卷大师" 两款智能设备上搭载的应用都使用 Flutter 开发,前者用于放置在校园内供学生们自助打印错题,后者则可以帮助老师智能识别学生的答卷以及统计分数。借助 Flutter,团队得以为超过 200 所学校的师生快速完成设备软件的开发以及迭代。

△ 智能设备 "极课错题打印机" 中的应用使用 Flutter 开发

有些时候,Flutter 打造的作品本身也能进一步提升团队的工作效率。比如字节跳动最有趣的 Flutter web 应用之一 Alchemy,这是一款服务于抖音内容创作的内部工具,为 PGC 与 UGC 用户提供便捷有趣的素材生成工具与海量素材,并批量产出受版权保护的设计物料。

△ Alchemy

像素级精美,收获用户芳心

Flutter 对应用屏幕渲染的精确控制能力,让团队得以放开手脚打磨产品的每一个像素。"Lemon8" 就凭借优良的用户体验荣登 2021 年日本地区 Google Play 年度应用榜单,这是一款兴趣种草社区应用,专注于时尚、美容、美食、旅游、居家、健身、艺术、户外、摄影等内容领域。多样的兴趣圈层对应用的一致认可,离不开 Flutter 对画布强大的控制力,以及团队的精心雕琢。

△ Lemon8

多平台开发战略核心

Flutter 是我们公司当下的多平台开发战略核心。我们从最初的几个应用开始,逐渐发展到现在的 90 多个应用,面向包括移动端、web 端、桌面端,以及嵌入式设备等多个平台。我们致力于推动 Flutter 在字节跳动的深度应用,并对核心框架作出贡献。

—— 王莹,字节跳动 Flutter Infra 引擎技术负责人

移动端医疗服务应用 "小荷健康"、推荐优质房地产内容和信息的应用 "幸福里"、团队虚拟办公工具 "Coze",以及程序员和产品经理们熟悉的社区平台 "掘金"……字节跳动如今使用 Flutter 开发的应用已经超过 90 款,全部由字节跳动的 800 多名 Flutter 开发者和 Flutter Infra 团队共同支持。

在如此广泛地采用 Flutter 的同时,团队自然也对 Flutter 开放的社区赞叹不已: 来自世界各地的开发者们都在为社区贡献代码、编写 package、完善文档和制作教程,而总有让您挠头的问题能在社区中找到答案。

团队也在为 Flutter 核心框架作出自己的贡献。比如提升核心框架在 iOSAndroid 上的稳定性,优化 RasterCachePlatformView多引擎线程调度x86 桌面系统Web 等功能,以及为 Flutter 的 DevTools空安全问题 提供修复等等。

随着 Flutter 3 的发布,相信字节跳动团队会创造出更多、更美好的多平台本地化应用,让我们拭目以待!

字节跳动的多平台绽放秘诀 | Flutter 开发者故事的更多相关文章

  1. 借助 Flutter 跨平台特性连接 10 亿玩家 | Flutter 开发者故事

    由光子工作室及 Krafton 联合研发的 PUBG MOBILE 依然保持着极高的人气,目前全球有 10 亿玩家,日活跃 5,000 万 (不包括中国大陆地区).从游戏策划伊始,团队就打算为各个平台 ...

  2. 双倍NB!字节跳动资深研发花7天肝出的这份286页“Flutter技术进阶”

    前言 截至目前,字节跳动有很多业务落地了 Flutter 技术方案,包括今日头条.西瓜视频.皮皮虾等 20 多个业务在使用 Flutter 开发,有纯 Flutter 工程,也有 Flutter 与 ...

  3. 🔥🔥🔥Flutter 字节跳动穿山甲广告插件发布 - FlutterAds

    前言 Flutter 已成为目前最流行的跨平台框架之一,在近期的几个大版本的发布中都提到了 Flutter 版本 Google 广告插件 [google_mobile_ads] .对于"出海 ...

  4. 【北京/上海/南京】【部门直推】【可查询】【实习&社招】字节跳动数据平台前端内推

    [北京/上海/南京][部门直推][可查询][实习&社招]字节跳动数据平台前端内推 重要信息,写在前面  [投递邮箱]chengxinsong@bytedance.com [微信扫码] 2019 ...

  5. 字节跳动数据平台技术揭秘:基于 ClickHouse 的复杂查询实现与优化

    更多技术交流.求职机会.试用福利,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ClickHouse 作为目前业内主流的列式存储数据库(DBMS)之一,拥有着同类型 DBMS 难以企及 ...

  6. 从字节跳动离职后,拿到探探、趣头条、爱奇艺、小红书、15家公司的 offer【转】

    前言 博主目前从事Android开发3年,前两年一直在抖音工作.我这篇文章并不是简单的描述一些面试中的题,或者总结一些Android的知识,而是想记录我整个的想法和准备的过程,以及一些心得体会,让大家 ...

  7. 2020年Android开发最新整理阿里巴巴、字节跳动、小米面经,你不看看吗?

    前言 2020年是转折的一年,上半年疫情原因,很多学android开发的小伙伴失业了,虽找到了一份工作,但高不成低不就,下半年金九银十有想法更换一份工作,很多需要大厂面试经验和大厂面试真题的小伙伴,想 ...

  8. 字节跳动Android实习面试难吗,应该如何应对?

    字节跳动的面试难不难其实很难去非常准确的定义,但是能肯定的一点是,字节跳动的面试题都很有水平,真正考察了该岗位在以后工作中需要的能力. 大学学的Java后面又自学Android方向,跟着老师在实验室做 ...

  9. 一份热乎的字节跳动客户端面经,已拿Offer

    字节面试过程: 4月4号进行内推,7天的简历评估,11号接到电话面试,尽管猝不及防回答仓促,但好在前期准备充分,通过.14号现场面试,次日收到通知,通过,二面.三面都很顺利.20号进行HR面,26号收 ...

  10. 字节跳动五面都过了,结果被刷了,问了hr原因竟说是...

    说在前面,面试时最好不要虚报工资.本来字节跳动是很想去的,几轮面试也通过了,最后没offer,自己只想到几个原因:1.虚报工资,比实际高30%:2.有更好的人选,这个可能性不大,我看还在招聘.我是面试 ...

随机推荐

  1. C# EPPlus帮助类(EPPlusExcelHelper)

    public class EPPlusExcelHelper : IDisposable { public ExcelPackage ExcelPackage { get; private set; ...

  2. OpenGL 三角形颜色插值

    1.最懒的方法--Nearest Neighbor对于三角形内的点,离三个顶点谁最近,就赋值为那个顶点对应的颜色. 2.最天真的方法--Distance三角形内一点的值应该来自于三个顶点. 计算距离: ...

  3. 面试题-python 什么是装饰器(decorator )?

    前言 python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象.很多python初学者学到面向对象类和方法是一道大坎,那么py ...

  4. 搭建lnmp环境-mysql(第五步)

    版本mysql 5.7 先删除系统自带的db 新建文件夹/data/download 进入后下载 wget http://repo.mysql.com/mysql57-community-releas ...

  5. Jmeter察看结果树中文乱码的处理方法

    1.接口执行成功后,在察看结果树返回的Response信息显示中文乱码 2.处理方法: 到jmeter安装目录找到\bin\jmeter.properties文件.右键记事本打开文件定位到这行代码 & ...

  6. jmeter 使用非 GUI 模式运行测试脚本

    使用非 GUI 模式运行测试脚本时可以使用的一些命令:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> ...

  7. pytorch报错----------- ***ValueError: some of the strides of a given numpy array are negative.

    最近遇到的一个pytorch报错: 然后报错了,这个几行代码就是从一个图片中读入数据,把bgr模式图片矩阵转换为rgb模式,这里采用的是改变矩阵索引,索引倒排     [..., ::-1]   . ...

  8. Cython.Compiler.Errors.CompileError: Cython.Compiler.Errors.CompileError: /home/devil/anaconda3/envs/chainerRL/lib/python3.6/site-packages/mujoco_py/cymj.pyx

    ubuntu系统下,python3.6,anaconda下配置mujoco210环境时遇到报错: /home/devil/anaconda3/envs/chainerRL/lib/python3.6/ ...

  9. 安装windows11的注意事项

    进入到安装界面后,在选择时间和货币格式的时候选择:英语(世界),据说这样可以避免第三方软件的安装. KMS命令: slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX sl ...

  10. 后端开发学习敏捷需求-->产品价值的定位

    产品价值的定位 为什么要写这一系列文章 2023年网上报名学习了,敏捷软件需求的培训课程 ,一直都没有进行回顾,回顾学习,总结 业务分析的能力偏弱,学习和了解关于业务需求相关的方法和理论 每一年都有一 ...