2020 春季速递:Flutter 势头正盛

文 / Patrick Sosinski & Tim Sneath

在过去的几个月中, Google Flutter 团队的工程师、产品经理、UX 研究人员、技术作者和开发者关系工程师们都遭遇了不少的挑战。和大家一样,在这特殊时期,我们也都忙于应对不同以往的日常工作。不过,Flutter 作为一个开源项目,我们能够使用各种公开可用的工具继续进行开发。在如今的形势下,我们不但需要适应新的工作环境所带来的限制和挑战,也需要照顾身边的家人。幸运的是,我们依然在不断取得进展,并推进这个春天积压下来的工作,更学会了如何身处办公室之外继续完善 Flutter!衷心希望大家也能不断进步,平安健康。

flutter-developers

Flutter 势头正盛

我们继续见证 Flutter 使用者的快速增长。自发布以来的 16 个月内,已有 200 万开发者使用 Flutter 。即便是在如今这种前所未有的情况下,3 月份也迎来了 10% 的月度增长,现在每个月有近 50 万开发者使用 Flutter。

这里还想和大家分享几个有趣的数据:

  • 开发者使用的操作系统:60% 的开发者人使用 Windows 系统进行开发,27% 的人使用 macOS,13% 的人使用 Linux。
  • 开发者所在的团队:35% 的开发者人在初创公司工作,26% 的人是企业开发者,19% 的人是独立开发者,7% 的人在设计机构工作。
  • 开发者使用的 Flutter 版本:78% 的 Flutter 开发者使用稳定版本,11% 使用 beta 版,11% 使用 dev 或 master 版本。
  • Flutter 使用者数量排名前五的地区是印度、中国、美国、欧盟和巴西。
  • 在 Play Store 中发布的 Flutter 应用约有 5 万个,仅在最近一个月就有近 1 万个应用上传。
  • Flutter 应用中使用最多的 framework package 是 httpshared_preferencesintlmetapath_providerpedantic
  • Flutter 应用中使用最多的第三方 package 是 providerrxdartcached_network_imagesqflitefont_awesome_flutterflutter_launcher_icons

Flutter 在企业中的应用

Flutter 的企业用户增长迅速。我们的研究结果持续表明,跨平台构建高度品牌个性化体验的能力,是大公司选择 Flutter 的关键因素。最近的一个例子是 Nubank,它是亚洲以外最大的数字银行,拥有超过 2,000 万用户。在对各种应用开发选项进行了 详细的调查和分析后, Nubank 选择了 Flutter,并在此后将其前端开发团队统一在同一个框架内,这也使得他们能在 iOS 和 Android 上同时发布新功能。

请观看他们的 开发者故事,了解他们如何用 Flutter 的优势改进团队开发体验以及打造跨平台优质应用:

企业用户普遍要求使用专业组件。我们正在与 SyncFusion 合作,他们的 Essential Studio 产品现在包含了一系列 高质量的 Flutter 组件,包括图表、PDF 编辑和条码生成器等。在 2020.1 版本 发布后,他们的所有组件都支持 Web、iOS 和 Android 三个平台,而且还提供了 Web 版的演示

版本发布流程更新

最后,在展望下一个稳定版发布的同时,我们想分享一些对版本发布流程的改动,我们认为这些改动将进一步提高发布的稳定性和可预测性。

现在的发布流程设计比较简洁,对维护的要求也比较低。在我们团队规模还不大,框架也比较新的时候,这个流程就相当适合 Flutter,但以目前的规模而言,我们遇到了一些影响 Flutter 贡献者和开发者的问题,包括:

  • 不清楚发布版本何时构建,因此也不清楚里面包含哪些代码
  • 缺乏对分支的测试,导致发布的热修复版本出现回退

从 4 月发布的 Flutter 开始,我们将转向包含 beta 版和稳定版的分支模式,并提供稳定期。现在我们将在月初发布 beta 版分支,并拣选 (cherry-pick)* 修正关键问题来 “稳定” 这个版本。大约每一个季度,当前的 beta 版分支会被提升为稳定版。如有必要,我们将继续在这个版本上进行热修复。我们的基础设施现在支持针对分支进行测试,这意味着我们可以验证拣选修正的问题,并根据严重程度接纳一些修复请求。

** 拣选 (cherry-pick): 指从一组既定的对象中挑选出最合适/最佳的。*

我们还借此机会同步了 Flutter 和 Dart 的发布流程和渠道。因此,Dart 现在也增加了一个 beta 版渠道,并将在未来与 Flutter 同步发布 (例如,Flutter 的 beta 版将包含 Dart 的 beta 版)。

如果你已经基于稳定渠道发布了 Flutter 应用,我们鼓励你在 beta 版上测试你的应用,并在发现问题时上报,以便改善稳定版本的品质。你也可以按照 Flutter wiki 上新发布的 Flutter 拣选流程,将稳定渠道上的回退或阻塞 bug 的严重性进行升级。

我们认为这个新的流程既能强化用户对发布品质和可预测性的信心,又能更容易地将热修复传递到稳定渠道。

版本命名变更

作为新的分支模式的一部分,我们对版本发布的命名方式做了一些调整。完整的技术细节可以在 Flutter wiki 上的 Flutter 构建发布渠道页面找到,其要点如下:

非稳定的发布版本 将在版本字符串中用 “.pre” 表示 “预发布” 。给定一个 “x.y.z-n.m.pr” 的版本字符串,每次从 master 构建一个新的 dev 渠道版本,”n” 的数值递增。

  • 1.18.0-1.0.pre <- master 版本升至 1.18 后的第一个 dev 版本
  • 1.18.0-2.0.pre <- 从最近的 master 版本构建出的下一个 dev 版本

Beta 版 将从上面的 dev 版本构建出来。当我们对其中一个版本进行拣选修正时,”m” 数值会递增。例如,如果我们将 master 的第 15 个 dev 版本作为 1.18 beta 版,那么版本编号看起来会是这样:

  • 1.18.0-15.0.pre <- 最初的 beta RC,和进入 dev 的版本相同
  • 1.18.0-15.1.pre <- (目前) beta 分支的后续构建,包含拣选结果
  • 1.18.0-15.2.pre <- 第二个后续构建

稳定版 的版本号为 X.Y.0。后续的热修复版本,如有必要,将增加补丁号 (X.Y.1、X.Y.2 等)。

  • 1.18.0-15.4.pre <- 分支中最后的 beta 版本
  • 1.18.0 <- 稳定版本,和 1.18.0-15.4.pre 内容一致
  • 1.18.1 <- 1.18.0 的热修复版本

下一步

我们的 下一个稳定版本 将采用这个全新的版本模型。

我们之前提到过 Codepen 对 Flutter 的支持,以下是我们最喜欢的几个作品及其作者:

codepen support flutter

如果你正在寻找 Flutter 学习资源,我们现在在网上提供免费的 Flutter 入门课程。这个由 Angela Yu 主讲的长达 10 小时的课程内含教程和代码实验室,可以助你开启 Flutter 之旅。

请你持续关注 Flutter 每周的推送更新。值此非常时期,请继续注意保持社交距离,祝大家身体健康!

原文: Flutter Spring 2020 Update / 中文发布:谷歌开发者公众号