Flutter 相容性策略

Flutter 團隊努力平衡對 API 穩定性的需求和對 API 持續研發以修復 bug,提升其人機工程學體驗的需求。並且我們會通過一種連貫的方式來提供新屬性。

為此,我們已經建立了一個測試登記。你可以在這裡針對每個改動為你的應用或函式庫提供單元測試,以幫助我們追蹤對現存應用造成破壞的那些改動。我們承諾,與這些測試的開發者進行合作以確定以下兩點之前,將不會有任何改動破壞這些測試。(1)決定改動是否足夠有價值;(2)提供對程式碼的修復方案使得這些測試能夠繼續透過。

作為該計劃的一部分,如果你想要提供一些測試方案,請向 flutter/tests repository 送出 PR。這個倉庫中的 README 檔案描述了具體流程。

公告和遷移指南

如果我們確實發布了一項破壞性改動(定義為:會導致一個或更多已送出的測試需要變化的改動),我們將透過 flutter-announce 郵件清單公佈,並且同時寫在發布版說明上。

我們提供一個受破壞性改動影響的 遷移程式碼指南 清單。

廢棄政策

我們將會不定期的廢棄一些確定的 API,而不是直接讓他們不可用。這將獨立於我們的相容性政策,只基於已送出的測試是否失敗,就如同之前描述的那樣。

已經廢棄的 API 將會在一個寬限週期後移除。以發布至穩定版本時開始至一個日曆年,或是 4 個穩定版本的發布為一個寬限週期,以時間最長的為準。

當已經廢棄的 API 到達了棄用期限時,我們會依照同上的步驟移除廢棄的 API。

Dart 和其它被 Flutter 使用的函式庫

Dart 程式語言有 自己的破壞性改動和棄用政策,並會在 Dart 程式語言通知郵件清單 裡公佈。

總而言之,關於其它依賴的破壞性改動,Flutter 團隊目前沒有做出任何承諾。例如,有可能 Flutter 的一個新版本使用了新版本的 Skia(Flutter 使用的圖形引擎)或者 Harfbuzz(Flutter 使用的字型形狀引擎),將會影響到已送出測試的改動。這一類別的改動不一定會被寫入遷移指南。