擁抱Flutter:關於Google Flutter Party的訪談
閑魚技術--嵐依
導語
Flutter作為google fuchsia的UI framework在此次google io 2018出現了多個分享主題。內置的Material Design支持、跨平台能力與高性能的渲染機制,吸引了大量開發者的關注。
閑魚技術團隊從flutter alpha版本開始,一直關注flutter技術,保持與flutter團隊的高頻互動,結合自己的業務特點和技術架構,推動了flutter hybird架構的實踐工作。成為flutter在全球大規模商業應用的典型樣版。
背景
Google IO 2018首日,flutter團隊定向邀請全球的早期開發者參與flutter party,共同分享flutter應用實踐和交流對其生態的演進看法。閑魚團隊酒丐和上葉也參與了此次party,並與flutter核心開發團隊成員進行了一些技術問題和flutter生態演進的意見交換。
請簡單的介紹下Google IO 2018的整體感受
酒丐:最震憾的感受是來自於google ceo Sundar Pichai所演示的Duplex AI call,完美的語音通話體驗,讓我們感受到巨大的危機,難以理解的自然語言/上下文的特指含義/適時的語言語調這些難題彷彿都已被解決,讓我有對Google Duplex團隊肅然起敬。總結起來就是:我知道世界終將被改變,但沒想到這麼快。
能分享一下你覺得在Flutter Party上的有趣的事嗎?
酒丐:Flutter Party是一個非常有趣的活動,他們邀請了很多的早期使用flutter的開發者和貢獻者來參加這個party。你可以在這個party里找到很多有意思的人並和他們交談。其中我記憶最深刻是與Mikkel Nygaard Ravn (flutter ios工程師)的交談,我抱怨了flutter在arm v7架構上的糟糕表現(經常性的crash),這個滿頭白髮的可愛老小伙居然從口袋裡掏出一個iphone 4s同我說我知道你的問題後就把手機換成了它,你所說的問題會在明天的commit里解決。(噢,你太調皮了)
能分享一下閑魚與Google Flutter團隊合作的思考嗎?
酒丐:我們從flutter alpha就開始跟進這個項目,我們一直在尋求一個高性能的跨端移動UI框架(你能想到的phoneGAP/Reactive/...我們都認真研究過)。在認真的閱讀了flutter文檔中介紹的工作原理和架構設計和細入的預研測試工作。結論它是我們想要的但不成熟的解決方案,使用它意味著我們要面對大量的功能缺失/穩定性/缺乏工具支持的問題,我們不想獨自面對這些問題。在經過我們與flutter團隊的關於關鍵技術問題和合作方式探討後,我們選擇了共同合作來解決這些問題。
在flutter party上,我們向Flutter團隊介紹如何通過ui視覺搞生成flutter代碼並自動打包編譯運行後的效果,他們很感興趣,認為這真是個很棒的idea,並期望可以成為flutter工具鏈的一員。這太有趣了,能說說你們怎麼做的嗎?
酒丐:先通過圖片演算法獲取到ui視覺稿的背景色調,然後進行組件切割,將視覺搞切割為一個一個小的視覺單元,並記錄他們的位置。
現在通過AI分類演算法,對閑魚的視覺樣式進行訓練,識別出這些視覺單元的類型和屬性。再通過多層LSTM加上正則化輔助,進行ui組件間的布局預測,生成一個布局文件。
這個布局文件就可以生成基於flex的dsl,flutter能很好的支持flex布局,讓dsl轉flutter代碼其實很簡單,只需進行規則替換就能完成。後續我們希望和Flutter團隊合作,將這些工程化到flutter的開發工具里。ui組件的代碼生成只是我們一部分的工作,我們還在研發基於人工智慧的databinding和action。隨著這些工作的深入,我們會將這些工具回報給flutter社區,也期望對此感興趣的同學可以聯繫我們來加速這個過程。感興趣的同學可以關注我們發布的一系列flutter文章,歡迎簡歷來砸。
http://weixin.qq.com/r/Pi4nIyXEpO3YKWFAb3u6 (二維碼自動識別)
推薦閱讀:
※深入理解Flutter引擎線程模式
※Flutter 安裝
※深入了解Flutter界面開發
※Flutter——谷歌開源的跨平台UI開發框架
※Android Studio 嘗試 Flutter Demo