FIDL API 相容性測試

我們會運用 API 相容性測試,確保指定支援平台 API 級別的 SDK 使用者不會在樹狀結構時變更 FIDL API。在 partner Fuchsia SDK 中發布的所有 FIDL API 都必須自動測試,確保具有回溯 API 相容性。本文說明什麼是 API 相容性測試,以及相關使用方法。

概念

FIDL 版本管理

讀取者應熟悉 FIDL 版本管理

API 等級

如要瞭解 API 相容性測試,請務必對 Fuchsia API 級別有基本瞭解。API 級別是指建構應用程式時可用的一組 API。這些是無帶正負號的 64 位元整數,以遞增順序指派給 Fuchsia 平台。

請特別注意以下兩個 API 級別:

  1. 開發中的 API 級別:這是 Fuchsia 開發人員對外掛程式所做的累加性變更。
  2. 穩定 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 可在這個層級淘汰,但無法刪除。

不支援

停止支援特定等級後,Fushisia 貢獻者可以在這個層級刪除或修改任何 API,而且系統會停止針對該級別執行相容性測試。不再保證使用者能夠成功指定這個 API 級別。

解決相容性問題

一般而言,只要在 FIDL 宣告中新增 @available 註解,即可修正相容性問題。

以下是變更 FIDL API 時可遵循的幾項實用準則。

  1. 使用 @available(added=HEAD) 為尚未穩定的新 API 加上註解。
  2. 為即將透過 @available(added=20) 提供給合作夥伴的新穩定 API 加上註解。
  3. 移除 API 時,請先確認沒有開發人員仍在使用 API,然後使用 @available(removed=21) 為舊的 API 加上註解。

如需更多範例,請參閱 API 演進指南FIDL 相容性指南