跳到內容
Tauri

Tauri 2.0 候選發佈版

我們非常榮幸地宣佈推出 Tauri 全新主要版本的首個候選發佈版。

經過半年多的 Beta 版本,以及一年多的 Alpha 版本,我們終於達到認為 Tauri 2 已趨於穩定的階段,並且不再預期會有重大變更。

我們希望利用相對較短的候選發佈版時程,專注於我們的文件和重要的錯誤修正,這些錯誤已由我們出色的社群和工作組成員回報。

簡化的 TL;DR 可以在本文末尾找到。

邁向穩定及更遠之路

透過此候選發佈版,我們希望溝通我們對穩定發佈版的期望和時間表。

我們被無數次問到「Wen Tauri 2.0?」,並且總是給出廣泛的答案。尤其是在開放原始碼專案中,過度承諾可能會迅速耗盡開發人員和維護人員的精力,或導致失望的採用者留下憤怒的評論。

這是漫長的 Alpha 和 Beta 階段的原因之一,也是我們等待候選發佈版的原因,因為我們力求將事情做好並使其易於使用。

另一個原因是,我們犯了過度承諾這個主要版本的錯誤,聲稱「行動裝置優先」,並且在過去幾個月中意識到,我們只能自己為行動裝置建立基礎,並且需要與社群和我們的採用者一起迭代,才能使其正確。

這並不表示行動裝置已損壞且不受支援。我們的官方外掛程式儲存庫中有行動裝置外掛程式,並且已經看到開發人員使用 Tauri 在 Android 和 iOS 上建構了很棒的應用程式。

我們的合作夥伴 CrabNebula 也向我們提供了關於開發人員在為客戶建構或支援行動應用程式時,開發體驗有多麼容易(或複雜)的回饋。他們甚至貢獻了多個行動裝置外掛程式(NFC條碼掃描器生物辨識觸覺回饋地理位置),作為他們工作的一部分。

我們看到行動裝置的開發體驗有待改進,並且我們承認並非我們所有的桌面功能和外掛程式都已移植或在行動裝置上可用。

這導致我們說,我們不想提高人們對 Tauri 2.0 將成為「行動裝置優先」版本的期望,但我們想明確表示,您**現在**可以使用 Tauri 開發可供生產環境使用的行動應用程式。

您可以從此候選發佈版後的穩定版本中期待的是

  • 更清晰且全面的文件
  • 較少會阻礙生產力使用的重大錯誤

我們計畫在 8 月底發佈 2.0 的穩定版本。在撰寫本文時,這將允許約 4 週的候選發佈版週期。

在穩定版本發佈後,我們的重點將轉移到盡可能提供功能對等性,並改進行動裝置的開發流程。這將在 Tauri 的次要版本中實現。

功能對等性和外掛程式開發將與 Tauri 的主要版本對齊,但在很大程度上將獨立於 Tauri 核心功能,並在我們的 plugin-workspace 儲存庫中進行。

開發人員體驗對我們來說是一個非常重要的主題。如果您有改進建議,或想自行改進現狀,請隨時透過 PR、Issue 或在我們的 Discord 伺服器上進行友善的對話與我們聯繫。

重大變更

在我們進入「不再有重大變更」的期望階段之前,我們討論並計畫了一些我們認為必要的重大變更,這是在不久前。

這些變更影響了很多開發人員,因此我們希望將它們捆綁在一起,並盡可能輕鬆地從最新的 Beta 版本升級到候選發佈版或穩定版本。

對於應用程式開發人員,我們在核心外掛程式如何在權限中被參照方面進行了重大變更。

您應該能夠從最新的 Beta 版本自動遷移到候選發佈版。為了成功完成此操作,您必須確保使用最新(RC 而非 Beta)版本的 Tauri CLI

否則,請閱讀下面的 詳細章節,其中說明了變更以及如何手動遷移。

對於 Tauri 作為程式庫的下游消費者,或擺弄 Tauri 內部結構的應用程式開發人員,我們有一個更大的 重構,您應該查看一下。

Tauri 核心外掛程式

在 Tauri 2.0 中,我們將大多數 1.x 核心功能遷移到獨立的外掛程式中,這使我們能夠獨立於 Tauri 核心迭代這些功能,並降低了首次貢獻者在功能方面的門檻。

此遷移還包括將某些功能保留在 Tauri 內部作為偽外掛程式。完全合格的外掛程式需要實作 Plugin Trait,並且需要是遵循 tauri-plugin-<plugin name> 命名方案的個別 crate。對於核心外掛程式,第二個條件是不可能的,因為我們將對 Tauri 產生循環依賴。因此,我們建立了偽外掛程式,這些外掛程式始終由 Tauri 本身初始化,並且僅實作外掛程式特徵。例如,這些是 windowpathwebview。目前,這些在外掛程式應用程式的 功能 中以下列方式被允許

...
"permissions": [
"path:default",
"event:default",
"window:default",
"app:default",
"image:default",
"resources:default",
"menu:default",
"tray:default"
]
...

這有多個問題

  • 任何具有衝突名稱的外掛程式 crate 都會破壞我們的建置流程(例如 tauri-plugin-window crate)和我們的用於新增外掛程式的 CLI(例如 cargo tauri add window
  • 我們無法使用任何已由現有外掛程式使用的核心偽外掛程式命名(例如,如果我們想要建立 tauri-plugin-mobile-core 並且它已被使用,我們將遇到第一個問題)
  • 開發人員在查看功能時,不清楚什麼是核心外掛程式,什麼是專用外掛程式

我們的方法是為核心外掛程式使用固定的命名空間,這已記錄在案並由 Tauri 核心強制執行。所有以 core: 或外掛程式名稱 core 開頭的外掛程式現在都被視為核心偽外掛程式,並且只有在它們位於 Tauri 程式碼庫中時才會初始化。

這將對所有啟用 Tauri 核心功能的功能造成重大變更。上面的範例將變更為如下所示

...
"permissions": [
"core:path:default",
"core:event:default",
"core:window:default",
"core:app:default",
"core:image:default",
"core:resources:default",
"core:menu:default",
"core:tray:default"
]
...

我們還新增了一個新的特殊 core:default 權限集,其中將包含所有核心外掛程式的所有預設權限,因此您可以簡化功能組態中的權限樣板程式碼。

...
"permissions": [
"core:default"
]
...

我們認為核心預設公開是相當安全且可以預設啟用的,在前端受到入侵的情況下,影響有限。

若要從最新的 Beta 版本遷移,您需要在功能中為所有核心權限識別碼加上 core: 前綴,或切換到 core:default 權限並移除舊的核心外掛程式識別碼。

行動裝置開發伺服器

我們對內建開發伺服器的網路公開進行了變更 PR #10437PR #10456。透過 Tauri CLI 的 2.0.0-rc.0 版本中發佈的變更,當目標是 Android 和 iOS 時,我們可以連線到在本機主機上執行的開發伺服器(先前這僅在開發桌面應用程式時才有可能)。

這表示您不再需要將開發伺服器公開在公共網路上。

Rust API 介面重構

透過多個工作組成員之間的協調努力,我們部分變更了我們的 Rust API 公開。這僅影響我們 Rust API 的消費者,並且不應對 Tauri 應用程式開發人員產生重大變更影響。

這是受到最近的安全公告 CVE-2024-35222 的推動,因為修正程式需要向直接公開的結構引入額外欄位,並對某些專案和內部使用造成重大變更。

我們得出的結論是,這種過度公開將在未來阻礙我們,並造成不必要的重大變更,因此我們決定從 Beta 版本到 RC 版本將是我們在開始 Tauri 3.0 之路之前實作此變更的最後機會。

我們減少了旨在供內部使用的公開元件數量。此外,我們使公開的結構成為非詳盡的,或將它們轉換為公開建構器模式或建構函式。在某些情況下,我們新增了一個新的 extend 欄位,以便在未來允許動態新增。最後,我們確保記錄 Tauri 的哪些模組被認為是不穩定的。

這將有助於我們提供(安全)修正或變更,而不會破壞被認為穩定的介面。

請仔細查看 #10158 pull request 中引入和討論的變更。

外部安全稽核

由於我們一直忙於修正和討論在 Beta 版本期間發現的問題,因此我們在這方面保持沉默了一段時間。

我們從未將版本 2 Beta 發佈版宣傳為可供生產環境使用,但意識到有些應用程式已部署到生產環境中。這導致我們宣佈並發佈針對其中一項發現的安全修補程式 (CVE-2024-35222),該修補程式也由 Tauri 社群成員獨立發現。

所有其他發現都在多個 Beta 版本中修正,但我們沒有為這些發現建立公告。我們得出的結論是,全面提醒可以等到候選發佈版再發佈,因為這些發現主要影響開發階段,或沒有嚴重的嚴重性。

透過候選發佈版,我們將把完整報告新增到我們的儲存庫中。請花時間閱讀報告,並深入瞭解 @gronke@pcwizz 來自 RadicallyOpenSecurity 的出色工作。

整個稽核由 NLNet 的出色人士資助,我們非常感謝能夠處於獲得全額資助的外部安全稽核的特權地位。

行動號召

以上所有主題都有一個共同的主題。如果沒有社群、我們的工作組以及其他致力於改善現狀的行動的持續支援,這些都不可能實現。

在我們發佈 Tauri 2.0 之前,我們希望確保聽到您的聲音、您的 PR 得到認可,並且文件對**您**有所幫助,以便您可以建構下一代跨平台應用程式。

目前,我們在 Github 上有 30 多人參與我們的工作組,但在我們的 Discord 中有更多人參與。這些出色的人員大多在他們的空閒時間從事 Tauri 的工作,只有極少數例外。我們目前看到許多 Issue、PR 和討論未解決且開放的時間比我們希望的要長。

為了改善這種情況,我們要求**您**參與 Tauri 專案。我們在各種情況下都能接受即使是最微小的貢獻。

如果您熟悉 Tauri 並且在您的旅程中已經使用過它,請花時間查看 Github 討論Github Issue 和我們的 Discord 支援。也許您已經解決了您剛接觸 Tauri 的同伴目前正在遇到的問題。

如果您認為您看到的一些問題是通用的,並且應該記錄在某個地方,那麼我們可能在我們的官方 文件 中為其提供了完美的位置。

若要貢獻改進或新增內容,我們歡迎在 tauri-docs 儲存庫中提交 PR。請確保您已閱讀 貢獻指南

如果您有能力理解目前的檔案並將其翻譯成您的母語,我們感謝您對我們文件進行 內容翻譯

如果您關注我們的專案已有一段時間,但從未做出貢獻,我們很樂意瞭解是什麼阻止您這樣做,以及我們如何改進這一點。請在我們的 Discord 或我們的 Github 討論 中與我們聯繫。

太長不看

  • Tauri 2.0 候選發佈版現已推出!
  • 需要從 Beta 版本進行一些遷移。查看 tauri migrate
  • 2.0 的外部安全稽核可在 此處 取得
  • 所有發現都已修正,並且修正已驗證
  • 文件是我們在穩定版本發佈之前的重點
  • Tauri 正在尋找更多貢獻者和社群參與

© 2025 Tauri 貢獻者。CC-BY / MIT