今年人品爆发,成功抽到了GDD的门票,并有幸接触到 Google 和一些大厂的一线工程师,两天感触颇深。

GDD 2019 之旅

第一天,因为有老司机带路,没有很肝的一大早起,9点半开始早上的Keynote,我9点多才到,也没有排很长的队,一路通畅的进入到了世博中心。安检、签到、领取了一个袋子,内含嘉宾牌子、一个 Google 的文化帽、一个活动的指引手册,一个大会的 Schedule 。便匆匆赶往了GDD 2019的开始 - 开幕式。

Keynote

本以为来的晚一点是很机智的决策,没想到进入会场后就后悔了(瞬间打脸):大家都已经入座完毕,基本没有了好的位置,留下的都是两边的后排,看来明年还能来的话,还是要肝一点。

第一个 Speaker 是 Google 的大中华区总裁,讲了一些 Google 的成就、未来规划及一些开发者支持什么的,经典场面。

第二个 Speaker 是一个金发小姐姐,当我都准备把同声传译的耳机放进耳朵的时候,小姐姐一声”大家好”,让我把手又放下来了,随即又反应过来,来中国,入乡随俗学说一句”大家好”也没啥,随即又拿起耳机。但是没想到,这个小姐姐全程中文演讲,拿着的同声传译耳机,没有机会放进耳朵,真的是自愧不如…,这个小姐姐带来是 Tensorflow2.0,因为对 Tensorflow 没有过多的了解,所以 awesome 不出来。

第三个 Speaker 带来的是Android 10相关的,因为 Android 10 已经在之前的 Google IO 上讲的差不多了,而且正式版也已经推送。所以也没有什么的变动。

然后接下,就是我来的目的了 - Flutter。照旧,先吹一波,这次还请了一些国内大厂的一线工程师一起吹,但是真的吹的太尬了:”引入 Flutter 后经常崩溃的现象得到了解决“,这也太外行了吧。然后介绍了 Flutter 的船新版本-1.9.0,最大的 Feature 是把之前推出的Flutter Web Preview合入到了 master,并且做了一些演示,Flutter 一统天下之日可待。Speaker 透露,Flutter 的开发者中,有 1/5 来自中国,可以看得出,国内开发者还是对 Flutter 抱有很大的热情的,也很高兴成为了这 1/5 的一员。

后面的 Speaker 讲的内容也不太感兴趣,就不回忆了~

当科技遇见艺术与文化

听的第一场 Session,倒不是我对它有很大的兴趣,是因为看了上午的安排,都没想要听的(逃~,还不如来欣赏下艺术。

Google 的文化与艺术团队做了个很牛逼的事情,就是和世界各地的博物馆合作,通过高分辨的图片,把博物馆中的藏品数字化,让人们在手机里面(观妙中国App),足不出户就可以看到陈列在博物馆中的藏品。Google 特别强调,这个项目是非盈利性质的,所有展品的版权也归原博物馆所有,也就是纯情怀~不得不感叹 Google的团(zhen)队(you)文(qian)化。

这场 Session 看下来,觉得商业公司做一些不追求利润的公益性质的项目,不管怎样,都值得掌声,即使现在 Google 离自己的 slogan (Don’t be evil)有点远了。假如有一天,各种原因,这些文化瑰宝遭到破坏,Google 的照片,可能是她们曾经存在的唯一证明。(让我想起来今年早些时候,巴黎圣母院着火,大家说育碧要参与重建一样)

使用 Flutter 构建应用

Flutter 相关的第一场 Session,主要讲了一下 Flutter 目前的发展情况和一些大厂的实践。很虚的一些东西,唯一能了解的就是目前国内有哪些大厂在 Flutter 上有实践。

发展情况

Flutter 现在的使用量已经比 1.0 的时候提升了 100%,位于 Github 开源项目的前 Top15,并且有 1/5 的开发者来自中国。犹记得去年 GDD 的时候,Flutter 甚至没有 release,今年的 GDD 上,已经推出 1.9 了,不得感叹下发展的速度。

大厂的实践

主要介绍了国内一些大厂的实践,其实就是商业互吹。BAT 都有比较成功的案例,头条在抖音上也有使用。说实话,示例的大厂中,比较失望,因为没有很有价值的信息,要么是纯 Flutter,要么是作为一些很深的二级页面使用,和我们目前项目中遇到的问题完全不相同。有种感觉本来想取经的,发现你是走的最远的那个。

Android 10 和隐私保护

听到一半偷偷溜了…,不是不感兴趣,而是 Android 10 在 Google IO 上面发布也有段时间了, 新特性基本都知道了。听了一会发现都是一些知道的东西,溜了溜了…

Flutter 如何呈现组件

算是一个比较硬的干货,主要讲 Flutter 的 Widget、Element、RenderObject 三种 Tree 之间的关系,比较适合入门的人看。现场 code 解释了三个 Tree 的生命周期,通过 DevTools 来比较直观的说明了什么情况下 Widget 会重建。

这块的内容,其实之前也有研究过,算是加强印象了。挖个坑:写篇关于三种Tree的博客。

Flutter 中的高级文本功能

通过一个聊天气泡的 Demo,介绍了 Flutter 中的文本功能,包括字体排版、适配甚至是在文本中嵌套 Flutter App(让人 wow 的功能)。还介绍了 Flutter 中 Text 的底层实现,如何保证符合各端的规范。

Flutter 的混合开发

期待最高的 Session,主要想听听闲鱼团队对已经开源的 FlutterBoost 的一些设计理念,遇到的问题及解决方式,还有就是 FlutterBoost 以后的规划,很遗憾,没有听到多少干货,大多数是对 FlutterBoost 开源项目的简单介绍,以及开源了一个 FlutterBoot,一个工程脚手架,听起来不错,如果你是 iOS 开发者,不用再在 Android Studio、Xcode、VSCode 三个 IDE 之间来回切换,通过任何一个都能把整个项目启动起来。但是,这个开源项目,一经发布,就被官方劝退了:“目前还处在 beta 阶段,不建议在生产环境使用。”,你可以在这里找到它。

我们项目中使用了 FlutterBoost,遇到了一些问题,想借此机会能有所解决,目前来看,并没有。略感失望,只得到了官方的抱歉:

线下交流

收获最大的一个环节,得到了很多“内幕”消息。

第一天,听完 Flutter 相关的 Session 后,便匆匆赶往 Flutter 展台,同 Flutter 工作人员聊了起来。

第一个问题就是让我们项目中最痛的点:Flutter 什么时候支持混合开发,希望官方能够给一个 Best Practice。得到了一个比较明确的回答:Flutter 团队已经注意到这个点,现在已经列为团队内部第二优先级的任务(第一优先级当然 Flutter 自己的发展,并且,已经分出去了一半的人,去解决这个问题,至于是把 FlutterBoost 做的更好,还是 Flutter 团队自己新出一个方案,还不能确定。毕竟他们和闲鱼团队合作比较密切,也能理解。但是没有得到一个准确的 deadline。

第二个问题,Flutter 内部自己有没有使用混合开发。因为我们公司的项目,迁移一开始就遇到了这种比较棘手的问题,按理说,Flutter 团队应该早就能知道这个问题,所以心中比较疑惑。果然,Google 内部团队都没有混合开发的实践,自然而然,也没有所谓的 Best Practice。

第三个问题,Flutter 是否打算支持反射。一个很重要的功能。比如我们在做路由的时候,是手动去维护了一个路由表,而且由于没有映射功能,我们在做注册的时候,是真的去初始化了每一个类。这样会引起两个比较麻烦的问题:

1. 手动维护映射表,很麻烦。
2. 提前初始化了所有要注册的类,项目一大,内存就上来了。

虽然 Dart 支持映射,但是 Flutter 出于安全性(或者是包大小?)禁用了映射库,导致 Flutter 没有映射的功能。然后得到的答案是目前没有支持的打算,这里可以找到有关于此的激烈讨论。

所以,第二个问题,很遗憾,无解。那么第一个问题呢?当时也有幸和闲鱼的工程师交流了一下,了解到他们是通过注解生成了一个映射表,不需要手动去维护。所以,第一个问题,可以通过注解去解决。也算是有所收获吧(Update:我们项目中也用注解去做了,很爽)。说到这里,线下也见到了很多闲鱼团队的工程师,也聊了很多,毕竟他们是国内 Flutter 这块,走的最远的。通过交流,了解到了他们踩的一些坑,和一些经验。虽然 FlutterBoost 饱受诟病,喷归喷,但其实也是蛮艰辛的一条路,给他们点赞。

技术之外

除了技术上收获颇丰,GDD 也旨在让开发者玩的开心。各种周边,各种礼品,各种零食,各种游戏。处处体现着 Google 的文化(不差钱)。

一波现场照👇:

最后

第一次参加如此盛大的开发者大会,见到了很多优秀的人,也亲身体验到了 Google 文化的魅力,亲临现场和在网上看直播是不一样的体验,特别是还有机会和一线工程师深入交流。希望明年GDD再见👋