谷歌開發者大會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

本文做者:閒魚技術

閱讀原文

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索