我們進行 API 相容性測試,確保 SDK 使用者以支援的平台為目標 在樹狀結構中,FIDL API 的變更並不會破壞 API 級別。所有發布於以下平台的 FIDL API: 系統應自動為合作夥伴 Fuchsia SDK 進行反向 API 測試 相容性。本文件說明何謂 API 相容性測試及使用方式 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件
概念
FIDL 版本管理
讀取器應熟悉 FIDL 版本管理。
API 等級
如要瞭解 API 相容性測試,請務必先初步瞭解 Fuchsia API 級別。API 級別代表建構元件時可用的 API 組合 應用程式。這些是指派給 Fuchsia 平台的不帶正負號 64 位元整數 。
請注意以下兩個 API 級別:
- 開發中的 API 級別 - 這就是 Fuchsia 開發人員進行附加變更的目的。
- 穩定的 API 級別 - 這個等級穩定,其途徑區域不會改變。
目前的平台版本管理實作尚未反映這一點: 在 Fuchsia 原始碼樹狀結構中,我們會記錄 API 與 ABI 的版本記錄,以及級別 狀態 (「開發中」和「支援」又稱穩定版) //sdk/version_history.json.
API 級別演進
API 級別會經歷數個階段,如下圖所示:
+----------------+ freeze +--------+ drop +-------------+
START -> | in-development | -----> | stable | -----> | unsupported |
+----------------+ +--------+ +-------------+
開發中
在這個階段,新的 API 元素會不斷演進 API 級別 廣告素材可能會導入、淘汰等 不得針對此層級導入的 API 進行破壞性變更 ,確保沒有合作夥伴仍採用這個層級的 API。
穩定版
API 級別已無法接收變更。貢獻者應開始介紹 將 API 提供給合作夥伴的下一個開發 API 級別。「凍結」時API 層級,該等級可能就不會再收到變更。這通常會立即生效 應先進行說明裝置的支援時間至少為 6 週 Fuchsia 平台 停止支援您可以在這個層級淘汰 API,但無法刪除。
不支援
當我們停止支援某個等級時,Fchsia 貢獻者可以自由刪除或 會修改這個層級的 API 停止執行這個層級的相容性測試目前無法提供任何擔保 讓使用者順利 指定這個 API 級別
解決相容性問題
只要在 FIDL 中新增 @available
註解,通常即可修正相容性問題
宣告的內容
以下是變更 FIDL API 時應遵守的實用準則。
- 使用
@available(added=HEAD)
為新的、尚未穩定的 API 加上註解。 - 對已準備好提供給合作夥伴且不會變更的新穩定 API 加上註解
只在
@available(added=NEXT)
。 - 移除 API 時,請先確認沒有任何合作夥伴仍在使用該 API,然後
為舊的 API 加上
@available(..., removed=NEXT)
註解。
如需更多範例,請參閱 API 演進指南和 FIDL 相容性指南。