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