今天我們非常高興的宣布,F(xiàn)lutter 的 1.0 版本正式發(fā)布!Flutter 是 Google 為您打造的 UI 工具包,幫助您通過一套代碼同時(shí)在 iOS 和 Android 上構(gòu)建媲美原生體驗(yàn)的精美應(yīng)用!
如今,移動(dòng)開發(fā)者們在同時(shí)兼容 iOS 和 Android 時(shí)有兩種選擇:走原生開發(fā)路線,把界面和邏輯在不同平臺(tái)分別實(shí)現(xiàn);抑或用同一套代碼兼容多個(gè)平臺(tái),但這往往意味著運(yùn)行速度和產(chǎn)品保真度的損失。我們堅(jiān)信,F(xiàn)lutter 為您提供了一套兩全其美的解決方案——既能用原生 ARM 代碼直接調(diào)用的方式來加速圖形渲染和 UI 繪制,又能同時(shí)運(yùn)行在兩大主流移動(dòng)操作系統(tǒng)上。
「正式」向您介紹 Flutter
Flutter 并不是要替代原生應(yīng)用開發(fā)模式,您可以用 Flutter 開始一個(gè)全新的應(yīng)用,也可以把 Flutter 理解為應(yīng)用內(nèi)置的一個(gè)引擎,把這個(gè)引擎引入到現(xiàn)有的工程里。
讓我來從以下四個(gè)特點(diǎn)為您介紹 Flutter:
Flutter 可以幫助您構(gòu)建界面精美的應(yīng)用。我們希望設(shè)計(jì)師們都能充分發(fā)揮自己的想象,盡情施展精美絕倫的創(chuàng)意,而不受框架局限性的干擾。通過 Flutter,您可以在屏幕上有像素級的掌控。Flutter 強(qiáng)大的圖像組合能力讓您近乎可以不受限制的堆疊任何圖形、視頻、文本和控件。Flutter 內(nèi)置了一系列的 widgets (在 Flutter 里,幾乎所有內(nèi)容都是 widget),這些 widgets 可以幫助您在 iOS 和 Android 上實(shí)現(xiàn)極致的視覺體驗(yàn)。Flutter 集成并有最大程度的實(shí)現(xiàn)了 Material Design —— 這是 Google 為數(shù)字體驗(yàn)所創(chuàng)作的開放的設(shè)計(jì)系統(tǒng)。
Flutter 的另一個(gè)特點(diǎn)的速度快。它基于 Skia 2D 硬件加速圖形引擎,該引擎也同樣用在了 Chrome 和 Android 平臺(tái)。媲美原生應(yīng)用的速度,這是我們在構(gòu)建 Flutter 時(shí)的初心。Flutter 的代碼基于 Dart 平臺(tái),它可以被編譯成 iOS 和 Android 平臺(tái)上 32 位和 64 位的 ARM 代碼。
Flutter 非常高效。Flutter 引入了 Stateful Hot Reload(保持應(yīng)用狀態(tài)的熱重載),這個(gè)革命性的新特性可以讓移動(dòng)開發(fā)者和設(shè)計(jì)師們實(shí)時(shí)迭代應(yīng)用程序。通過 Stateful Hot Reload,無需重新啟動(dòng)應(yīng)用,你就可以在程序運(yùn)行的時(shí)候直接看到代碼修改之后的效果,Stateful Hot Reload 改變了開發(fā)者們編寫應(yīng)用的方式。在我們的用戶反饋中,開發(fā)者們表示該特性使得開發(fā)效率提升了三倍。
最后,F(xiàn)lutter 是開放的。Flutter 是一個(gè)基于 BSD-style 許可的開源項(xiàng)目,全球數(shù)百位開發(fā)者在為其貢獻(xiàn)代碼。Flutter 的插件生態(tài)系統(tǒng)平臺(tái)也充滿活力。有數(shù)千款插件已經(jīng)發(fā)布,避免了重復(fù)造輪子。由于 Flutter 應(yīng)用程序使用標(biāo)準(zhǔn)的 Android 和 iOS 的編譯打包工具 (build tools),因此它的開放還體現(xiàn)在您可以使用原生開發(fā)資源。比如,您同樣可以在 Android 上使用 Kotlin 或者 Java,在 iOS 上使用 Swift 或者 Objective-C 來寫邏輯或者界面。
結(jié)合以上這些,再加上您順手的開發(fā)工具,比如 Visual Studio Code、Android Studio、IntelliJ 或其他您青睞開發(fā)者編輯器,您就可以開始使用 Flutter 體驗(yàn)一套代碼同時(shí)在 iOS 和 Android上實(shí)現(xiàn)原生應(yīng)用效果的樂趣了。
Flutter 勢頭正旺
在 10 個(gè)月前的世界移動(dòng)大會(huì) (MWC) 上,我們發(fā)布了 Flutter 的第一個(gè) Beta 版本,在正式版本尚未推出之前,已經(jīng)有成百上千的基于 Flutter 開發(fā)的應(yīng)用在 Apple Store 和 Google Play 上架,很顯然,廣大的開發(fā)者們也已經(jīng)準(zhǔn)備好迎接這種全新的 UI 開發(fā)方式了。
在 Google 內(nèi)部,F(xiàn)lutter 已經(jīng)被廣泛用于多個(gè)產(chǎn)品,比如 Google Ads 已經(jīng)將其產(chǎn)品的 iOS 版本和 Android 版本轉(zhuǎn)向使用 Flutter。在正式版本之前,全世界已經(jīng)有多個(gè)公司開始使用 Flutter 來開發(fā)應(yīng)用,包括 Abbey Road Studios、阿里巴巴、Capital One、Groupon、Hamilton、京東、Philips Hue、Reflectly 以及騰訊等。
Capital One 團(tuán)隊(duì)的高級工程總監(jiān) Michael Jones 對于 Flutter 提到了如下的使用心得:
“我們對于 Flutter 所帶來的高效的跨平臺(tái)開發(fā)體驗(yàn)感到十分興奮。我們的工程師對其中的快速開發(fā)和 hot reload 給予了極高的評價(jià)。而且在過去的一年里,我們也看到了整體平臺(tái)巨大的變化,尤其是和原生系統(tǒng)深度集成的效果?!?/p>
“Flutter 使 Capital One 研發(fā)團(tuán)隊(duì)擺脫了 iOS 優(yōu)先還是 Android 優(yōu)先的固定思維,而是真正的移動(dòng)端優(yōu)先的開發(fā)模式。非常高興能看到 Flutter 1.0 的發(fā)布,并且也對 Flutter 如此快速的發(fā)展和開發(fā)者社區(qū)所迸發(fā)的熱情所感動(dòng)?!?/p>
*注: Capital One 是美國十大銀行之一,《財(cái)富》世界 500 強(qiáng)企業(yè)。
在今天的 Flutter Live 活動(dòng)中,知名的支付服務(wù)商 Square 正式公布了兩個(gè)全新的Flutter SDK。它們可以更加簡化基于 Flutter 的支付操作和服務(wù),無論是使用 Square 支付識(shí)讀器直接支付還是使用手機(jī)應(yīng)用進(jìn)行支付。Square 演示了一款基于它們的支付 SDK 所開發(fā)的應(yīng)用。該應(yīng)用來自 Collins Family Orchards,這是一家在太平洋西北部種植和銷售水果的家族農(nóng)場。
Flutter SDK:
https://squareup.com/flutter
Collins Family Orchards 應(yīng)用的開發(fā)者 Dean Papastrat 認(rèn)為:
“應(yīng)用在生產(chǎn)環(huán)境下的動(dòng)畫流暢度和頁面的切換速度真的讓我大開眼界。作為一個(gè) Web 開發(fā)者,上手使用 Flutter 非常簡單。真的沒想到能夠在短短的一周時(shí)間就完成了一個(gè)能夠?qū)崿F(xiàn)完整功能的應(yīng)用?!?/p>
同樣是在今天的 Flutter Live 活動(dòng)上,2Dimensions 宣布了一款全新的工具Flare,該工具可以將矢量動(dòng)畫直接嵌入到 Flutter 應(yīng)用中,并且用代碼來控制。Flare 打破了傳統(tǒng)的模式,無需再單獨(dú)開發(fā)應(yīng)用和動(dòng)畫,然后再轉(zhuǎn)換成設(shè)備資源和代碼。
Flare:
https://medium.com/2dimensions/flare-launch-d524067d34d8
使用 Flare 實(shí)現(xiàn)的動(dòng)畫可以作為 widget 嵌入到已有的 Flutter 應(yīng)用中。使其能夠融入整體的界面中,和文本、圖形渲染層以及其它 UI widget 疊加在一起。通過這種集成方式,可以將動(dòng)畫從其他平臺(tái)的 “黑盒” 局限性解放出來,持續(xù)促進(jìn)開發(fā)者與設(shè)計(jì)師協(xié)作完成應(yīng)用。Flutter 和 Flare 的緊密整合激發(fā)了設(shè)計(jì)師和動(dòng)畫師的熱情來構(gòu)建設(shè)計(jì)精美的移動(dòng)應(yīng)用。
為您介紹另外一位 Flutter 的合作伙伴 Nevercode,這是一家快速成長的,為移動(dòng)應(yīng)用提供持續(xù)集成和推送工具的提供商。今天,他們正式發(fā)布了Codemagic。該工具針對 Flutter 設(shè)計(jì),簡化了 Android 和 iOS 平臺(tái)上的應(yīng)用編譯和打包的處理過程?,F(xiàn)在已經(jīng)發(fā)布 beta 版本。使用 Codemagic,開發(fā)者只需要在 GitHub 里選擇一個(gè)含有 Flutter 項(xiàng)目的倉庫,僅需簡單的幾個(gè)點(diǎn)擊即可生成一整套處理流程,包括執(zhí)行測試,生成應(yīng)用軟件包并上傳至 Apple Store 和 Google Play。
Codemagic:
https://codemagic.io/
1.0 版本中引入的新特性
自首個(gè) Beta 版發(fā)布以來,我們持續(xù)為 Flutter 添磚加瓦,精雕細(xì)琢。尤其是今年P(guān)R2 版本的發(fā)布,我們?yōu)?iOS 風(fēng)格提供了全新的 widgets,接入了近 20 種 Firebase 服務(wù),以及不斷優(yōu)化性能、壓縮由 Flutter 打包的應(yīng)用大小。此外,我們也悉心聽取 Flutter 社區(qū)反饋,解決了大量的問題。
此時(shí),F(xiàn)lutter 正式開始使用 Dart 平臺(tái)新的 2.1 版本,這是對 Dart 2 的一次更新。它不僅生成更小的代碼,還能夠提供更快的類型檢查以及更有用的類型錯(cuò)誤提示信息。Dart 2.1 也帶來了新的語言特性,讓開發(fā)構(gòu)建過程事半功倍。這是來自開發(fā)者們的好評聲,他們在切換到新的引擎后感受到了顯著的速度提升:
1.0 正式版的主要目的是修復(fù) Bug 和提高穩(wěn)定性,但我們也非常高興地宣布:將有兩個(gè)新功能隨 1.0 正式版的預(yù)覽模式提供給廣大開發(fā)者。它們將會(huì)于 2019 年二月的季度更新中正式推出,兩個(gè)特性分別是:
引入 Flutter 到現(xiàn)有工程 (Add to App)
起初在構(gòu)思 Flutter 的時(shí)候,我們主要關(guān)注于從零開始構(gòu)建應(yīng)用的場景。但事實(shí)上受制于很多因素,并不是所有開發(fā)者都能從零構(gòu)建。顯然,他們更需要能夠在現(xiàn)有的應(yīng)用中用 Flutter 添加新的功能,或者分步驟、分階段將現(xiàn)有的應(yīng)用程序遷移到 Flutter。
Flutter 的架構(gòu)非常適合于這樣的場景,畢竟每個(gè) Flutter 應(yīng)用都包含了一個(gè)用于托管 Flutter 的 Android 或 iOS 容器。但精益求精方能上一層樓,我們在不斷努力改善漸進(jìn)式接入 Flutter 的體驗(yàn),包括更新模板、優(yōu)化工具、完善指南等等?,F(xiàn)在,將素材在 Flutter 與宿主代碼之間共享變得非常簡單了。另一方面,F(xiàn)lutter 的工具現(xiàn)在能讓您輕松在不使用調(diào)試器啟動(dòng)應(yīng)用的情況下介入和監(jiān)測現(xiàn)有的 Flutter 進(jìn)程。
我們會(huì)持續(xù)不斷地改善這一體驗(yàn)。雖然已經(jīng)有不少客戶已經(jīng)成功實(shí)踐了我們針對“應(yīng)用引入”提供的指南,但絕不會(huì)就此止步,我們會(huì)一如既往增加更多優(yōu)秀的案例,并為更加復(fù)雜的場景進(jìn)行延伸。同時(shí),您可以在Wiki 頁面查看關(guān)于將 Flutter 引入現(xiàn)有應(yīng)用的文章,也可以在這個(gè)GitHub 的項(xiàng)目看板上關(guān)注我們的進(jìn)展。
關(guān)于將 Flutter 引入現(xiàn)有應(yīng)用的文章:
https://github.com/flutter/flutter/wiki/Add-Flutter-to-existing-apps
GitHub 的項(xiàng)目看板:
https://github.com/flutter/flutter/projects/28
平臺(tái)級視圖 (Platform Views)
上面提到的 Add to App 功能非常適合于逐漸引入 Flutter 到現(xiàn)有應(yīng)用中,但有時(shí)候我們反倒需要將 Android 或 iPhone 平臺(tái)的控件嵌入到 Flutter 應(yīng)用當(dāng)中。
我們引入了 AndroidView 和 UiKitView 這兩個(gè)平臺(tái)級視圖的 widget 到 Flutter,您可以將它們分別嵌入到指定的平臺(tái)中。我們已經(jīng)在 Android 平臺(tái)上預(yù)覽這一功能數(shù)個(gè)月了,現(xiàn)在是時(shí)候?qū)⑦@一特性推廣到 iOS 平臺(tái)了。此外,像Google Maps和WebView這樣的插件已經(jīng)可以享受到這一特性帶來的種種便利了。
Google Maps:
https://github.com/flutter/plugins/tree/master/packages/google_maps_flutter
WebView:
https://github.com/flutter/plugins/tree/master/packages/webview_flutter
與其他組件一樣,平臺(tái)級視圖 widget 也屬于 UI 組合模型的一部分。這意味著您可以將它與其他的 Flutter 組件結(jié)合使用。舉個(gè)例子,上面的截圖中,右下角的浮動(dòng)按鈕是一個(gè) 50% 透明度的 Flutter widget。這也充分展示了 Flutter 這一獨(dú)特架構(gòu)的優(yōu)勢。
當(dāng)前這一功能已經(jīng)開放給開發(fā)者們嘗鮮了,而我們?nèi)孕枰粩嗵嵘阅芎透纳圃O(shè)備兼容性。所以我們建議您在構(gòu)建依賴 Platform Views 的應(yīng)用時(shí)要謹(jǐn)慎小心。我們會(huì)堅(jiān)持完善這一特性,并且期待能夠在下一次季度更新的時(shí)候?qū)⑦@一成果正式發(fā)布給所有用戶。
不止步于移動(dòng)平臺(tái)
就目前而言,F(xiàn)lutter 的首要目標(biāo)平臺(tái)是 iOS 和 Android,但我們也在不斷探索將 Flutter 拓展到手機(jī)端以外的更多平臺(tái)上。事實(shí)上,F(xiàn)lutter 的設(shè)計(jì)理念就是希望它可以作為一個(gè)靈活且便攜的 UI 工具包,以適應(yīng)各種需要繪制屏幕內(nèi)容的平臺(tái)。
一些進(jìn)展已經(jīng)公布,F(xiàn)lutter Desktop Embedding就是其中的一個(gè),這是一個(gè)使 Flutter 運(yùn)行于 macOS、Linux 和 Windows 等桌面操作系統(tǒng)的項(xiàng)目。前不久,我們嘗試在樹莓派平臺(tái)運(yùn)行了 Flutter 應(yīng)用,以非正式和探索的形式向用戶展示 Flutter 是有可能運(yùn)行在一些沒有完整桌面環(huán)境的小型設(shè)備中的。
Flutter Desktop Embedding:
https://github.com/google/flutter-desktop-embedding
同時(shí)在本周,我們在內(nèi)部預(yù)覽了一個(gè)還處于實(shí)驗(yàn)室開發(fā)階段實(shí)驗(yàn)性項(xiàng)目,未來它將極大拓展 Flutter 的運(yùn)行平臺(tái)。
Hummingbird 是一個(gè)基于 Web 實(shí)現(xiàn)的 Flutter 運(yùn)行時(shí)環(huán)境。它利用了 Dart 語言能被編譯成 JavaScript 的特性。這個(gè)項(xiàng)目讓 Flutter 應(yīng)用程序能夠無需改動(dòng)地運(yùn)行在標(biāo)準(zhǔn) Web 平臺(tái)。
我們在Medium 博客上發(fā)布了一篇關(guān)于 Hummingbird 的技術(shù)實(shí)現(xiàn)文章,更多的內(nèi)容會(huì)在 2019 年的 I/O 大會(huì)分享給大家。
Medium 博客:
https://medium.com/flutter-io/hummingbird-building-flutter-for-the-web-e687c2a023a8
當(dāng)然,移動(dòng)平臺(tái)一直都會(huì)是我們的首要目標(biāo)。接下來的幾個(gè)月,我們會(huì)不斷公布 Flutter 在這些核心平臺(tái)上取得的成果。
總結(jié)一下
伴隨著 Flutter 1.0 正式發(fā)布,我們會(huì)在當(dāng)前的 beta、dev 和 master 通道之外新增一個(gè)叫 stable 的穩(wěn)定版通道。它的更新不如其他通道那么頻繁,預(yù)計(jì)將以季度更新的形式將每一階段的穩(wěn)定更新收納進(jìn)去。
請前往https://flutter.io下載 Flutter 1.0 版本。我們的網(wǎng)站還提供了豐富的文檔幫您從其他的框架中遷移過來,也提供了 codelabs 幫助您更好理解開發(fā) Flutter 應(yīng)用的過程。另外我們的 cookbook 收錄了常見案例的指南及大量的技術(shù)性視頻也一定能幫助您認(rèn)識(shí)與了解 Flutter。
我們深知,那些從一開始就伴隨我們踏上征程的開發(fā)者們是如此令人敬佩。你們向我們提交了大量的反饋建議,幫助找到了諸多問題,產(chǎn)出了大量內(nèi)容,更和我們一起讓 Flutter 項(xiàng)目越來越好。Flutter 社區(qū)是我們最寶貴的財(cái)富,在這里,我們認(rèn)識(shí)了很多來自不同地區(qū)和不同開發(fā)生態(tài)的積極熱情、樂于奉獻(xiàn)的你們。你們因?yàn)閻鄱鵀檫@個(gè)開源項(xiàng)目無私的奉獻(xiàn)著,我們真誠地感謝你們!
最后,為 Flutter 吟詩一首:今朝東風(fēng)拂(Flutter)大地,問君幾時(shí)揚(yáng)帆去何方?
-
ARM
+關(guān)注
關(guān)注
134文章
9180瀏覽量
369493 -
Google
+關(guān)注
關(guān)注
5文章
1772瀏覽量
57841 -
編輯器
+關(guān)注
關(guān)注
1文章
806瀏覽量
31319
原文標(biāo)題:Flutter 1.0:Google 的可移植界面工具包
文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論