谷歌开发者大会2018实录——Flutter篇

摘要

一年一度的google开发者大会即将开始,今年的大会上,flutter会以什么样的形态展示在你们面前,1.0版本什么时候发布?有哪些应用场景?性能的表现如何?国内的flutter开发者生态又是怎样的?做为google合做伙伴的闲鱼展台有哪些趣事?逆袭的加班侠宗心,真诚为您分享。android

google开发者大会于今年9月20日在上海举办,闲鱼团队做为google的合做伙伴参加此次会议。我参会前就收到邀约要写一下此次GDD的一些见闻和见解,所以有了这篇文章,一些我的见解和感觉,供你们参考。但愿或多或少能帮到你们。因为我在团队负责flutter的总体落地,所以主要关注了flutter相关的议题。git

clipboard.png

flutter今年在开发者大会上有四个议题,前两个议题着重在介绍flutter的优点,以及在国内外的应用场景,以介绍类偏多。后两个议题主要讲解了flutter的上层性能优化实践,以及Skia场景下的性能优化策略。说一下此次参会的一些收获和本身看到的一些趋势吧。github

收获

● 工程侧比较关心的几个问题获得了必定的解答web

一个是工程侧咱们关注的在hybrid场景下更方便的hot reload方案,目前在纯flutter工程的场景下,hot reload的支持相对完备。但在hybrid场景下hot reload一直不太方便,虽然闲鱼团队整理了一些在这个场景下的须要使用的命令行工具,但业内暂时没有什么通用的方案,flutter团队也意识到了这一点,所以他们此次的showcase中展现了android studio上的attach功能,当hybrid工程使用android studio启动native代码后,就能够自动被attach上,从而能够进行后续的debug和hot reload能力,这部分功能在下图上能够看到一些端倪,感兴趣的同窗能够本身编一个studio plugin用一下。api

clipboard.png

另外一个是flutter内嵌native的一些可能的方案。目前在flutter的master分支上,你们能够关注下platform_views.dart中的RenderAndroidView这个类,基本原理是渲染部分仍然使用texture的机制进行UI部分的绘制,事件的部分的实现是将Dart侧的事件组装成AndroidMotionEvent经过systemchannel再回传给Android的nativeView,这部分iOS在github上暂时尚未实现,但理论上应该是一致的,目前代码侧也找到了一些猜想的依据。性能优化

clipboard.png

能够按照下图的位置找到这个case的example,本身注册platformviewapp

clipboard.png

这部分说一下本身的见解,这个解决方案的完成意味着后续不论是webview在flutter侧的内嵌仍是高德地图的内嵌都会迎刃而解,这就使得在native侧已有的ui代码获得了比较好的复用,有利于在已有app上作flutter的代码迁移,不过目前看起来,代码只有单端的实现,还须要继续期待。函数

● 了解到较多基于flutter侧的UI渲染的性能优化的手段。工具

咱们以前有尝试在低端机上进行flutter和native的性能测试,并无系统的理解为何flutter的性能会更好,通过第一天的最后两个topic,有了一些启发。从布局的角度出发,flutter整个的布局体系相较于iOS和android的布局体系有更少的计算,另外skia底层相较于android自带的skia也有较大的优化,针对于跟渲染相关的底层api的调用次数也有明显的降低。两个topic在代码的编写上也给出了一些建议,针对widget的setState刷新的范围越少,性能越好,另外应该较少调用save Layer相关的Api,以提高底层渲染的效率。因为两个topic都只有30分钟,不少细节没有细讲,后续期待他们的ppt放出来。布局

clipboard.png

最后在整个演讲的过程当中看到了于潇和李宇骞两位老师针对flutter以及skia在每一帧渲染上的一些函数调用的分析和解决,对不少细节的部分锱铢必较,这个就是匠人精神,也但愿他们的这种专业精神,能感染更多的人。

趋势

● flutter总体趋于完善,hybrid场景的支持加速部署。

flutter发布pre release 2,并有可能年末发布1.0的版本,就我本身在官网github的了解来看,最近几个版本主要都是在补齐iOS design风格的一些控件,engine侧改的并很少。另外一方面,flutter团队意识到,若是flutter须要后续在众多app内落地,hybrid场景(flutter+Native)不可避免。在这几个议题的showcase中,国内的几家大公司使用的全都是hybrid的场景。所以咱们才会看到,Matt Sullivan在第一个议题花了大量篇幅教你们如何以module的形式在已有app内引入flutter的代码,后续经过新的flutterplugin提供hybrid场景下更加方便的hot reload能力。这个过程当中我眼尖又发现了里面存在flutter嵌webview的showcase,一切都证实,后续flutter会更加完善hybrid场景的能力,让更多但愿接入的app能够用更低的成本接入已有app进行开发和尝试,相信这对社区的繁荣会有较大的推进做用。

● 国内开发者蠢蠢欲动,有星星之火,燎原之势。

在flutter官方的渠道中能看到除了闲鱼团队,还有一些其余的大厂也在使用flutter进行应用。在线下交流过程当中,发现了很是多的团队或多或少在尝试应用flutter。此次跟滴滴,拼多多,百度,以及阿里系的不少同窗都有交流,固然也有不少创业团队在观望。这个过程当中有但愿尝试直接构建新app的,也有在老app中增长功能的,总之,此次发现了不少以前没有发现的团队在跟进,作有针对性的研究和改造。

在这个趋势下,我更多的思考的是闲鱼做为flutter社区的领头羊,能给社区带来什么。一直一来咱们长期稳定的对flutter社区输出一些文章,讲解咱们的解决方案和flutter相关的底层原理。后续个人但愿是,能抽象化咱们的解决方案贡献给社区,让更多的同窗能够受益。相信这部分在后续的几个月应该会有一些产出给到你们,你们敬请期待。

闲聊两句

因为今年咱们是google的合做伙伴,所以给了团队一个专门的展位,很是感谢google的顾仁民同窗帮忙,展位安排的很是棒。

clipboard.png

我原来觉得在展位很轻松,后来才发现,因为黑科技UI2Code让咱们的展位异常火爆,你们问了很是多关于flutter和tensorflow-lite的问题,

clipboard.png

另外咱们的展位也吸引了google的tensorflow-lite和flutter的负责人前来围观,咱们团队现场生成代码童叟无欺。

clipboard.png

今年的会议也让我跟不少网友线下面基,你们一块儿分享交流技术,很是开心。

clipboard.png

本文做者:闲鱼技术

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索