原文地址:blog.codemagic.io/releasing-y…
釋出時間:2020年6月16日
所以你建立了你的第一個Flutter應用,並在iOS裝置的AppStore和Android裝置的Google Play上釋出。然後,你想接觸更多的受眾和目標網路,所以你用靜態主機發布了它。但你仍然想要更多。如果你想要移動裝置的效能,但又想要web的響應速度,那麼桌面版就是答案。
目前的選擇
對於桌面,你有幾個選擇來發布--但它們都有一定的權衡。在這裡,我們將討論為什麼你可能想選擇一個而不是另一個。
Electron
你可能以前聽說過,因為目前MacOS和Windows上的大部分第三方應用都是用它釋出的。Electron是一個由chromium驅動的瀏覽器,它使用Node.js將網路瀏覽器與檔案系統粘合在一起。你可以得到為網路開發的好處,但又有桌面的靈活性。它使用大量的JS來做到這一點,所以你失去了AOT(提前編譯),這意味著沒有剪枝,優化或一般效能。
Flutter在移動端工作得很好的原因是由於釋出構建的AOT。你可以通過在根目錄下新增一個manifest檔案和一些額外的模板指令碼,用Electron釋出一個Flutter應用程式。您打包您的Flutter Web應用程式,就像部署到靜態託管時一樣。如果您想使用FLUTTER_WEB_USE_SKIA
標誌,您可以從Web版本中獲得更好的效能。
單機版
無論你是用Electron、桌面嵌入還是自定義嵌入器來構建你的Flutter桌面應用,你都需要一種方法來向世界釋出應用。如果你用Codemagic、Github Actions或手動建立一個釋出構建,你就把構建上傳到Amazon S3或類似的CDN,並把連結提供給客戶。這種方法很好,因為你不必等待審查過程,也不必處理每個平臺的非常具體的規則。然後,你可以把這個連結放在你的Flutter Web應用或PWA清單上,只要使用者覺得合適,就可以提供原生體驗。
這種方法的一個主要缺點是你如何處理更新。您需要使用一個庫或自定義構建的解決方案,用於在後臺下載和安裝更新或通知使用者新的更新。你給使用者的步驟越多,他們完成所有步驟的可能性就越小。你以使用者為代價換取了靈活性和可用性。
有一些不錯的工具,比如MacOS和Windows的Sparkle,它為你每天使用的很多應用程式提供了動力。每當你看到一個彈出視窗說一個更新已經準備好安裝時,很有可能是在使用這個庫。該庫通過託管的RSS源執行,你可以通過解析來獲取釋出說明、版本和安裝連結。該應用程式將嘗試在後臺為你自動安裝它們,並在你下次啟動時重新載入。
官方商店
現在,你可能會推遲的選擇是釋出到官方商店。在應用商店之外,可能有合法的理由,因為你可能沒有遵循所有的指導方針,有一個自定義的部署和釋出後臺,企業應用只用於內部或有限的使用,或者你只是想在你的網站上有一個連結來下載應用。許多應用程式甚至在商店中提供應用程式,但也有一個線上版本,可能是測試頻道或特殊構建。我發現這是一個很好的方法,因為例如Mac AppStore仍然沒有像iOS那樣為MacOS應用提供TestFlight。
部署到商店可能具有挑戰性,但我相信最終是值得的,因為你獲得了安全性和自動更新。他們還將處理付款和退款。在未來的文章中,我將會介紹向Mac AppStore釋出Flutter應用程式,就像我在iPadOS和MacOS上釋出新的Widget Studio一樣。順便說一下,Widget Studio也可以作為一個PWA。我建議在MacOS上,你應該只包括你正在積極使用的許可權,如果你想分享Mac和iPad應用的購買,你需要有相同的捆綁ID。你不會用Catalyst,而是用當前的桌面嵌入來做這件事。
結束語
這是一個激動人心的時刻,以一種原生的方式將移動應用帶到桌面,這在以前是不可能的。Flutter很厲害,可以讓你針對MacOS、Windows和Linux,現在由你來決定如何釋出。Codemagic支援Mac和Linux,這比2個核取方塊還要簡單。如果你有任何問題,請告訴我,我期待著看到你的Flutter桌面應用程式!
Rody Davis Jr是一名專業的全棧開發者,在企業和個人應用方面都有豐富的經驗。他使用最新的框架為App Store、Google Play、Web和桌面建立應用程式。Rody熱愛Flutter、Web和所有有創意的東西,並在Medium上寫Flutter文章。他希望通過他的應用接觸到儘可能多的人,並展示最新科技的可能性。
通過www.DeepL.com/Translator(免費版)翻譯