相容性

為確保平台相容性,Fuchsia 提供下列保證和限制:

API 相容性保證

Fuchsia 針對數字 API 級別提供下列 API 建構時相容性保證:

政策

如果最終開發人員可以使用某個 SDK 版本,成功建構以數字 API 級別 N 為目標的元件,他們就能在支援的階段中,使用任何 SDK 版本搭配 N 成功建構相同的來源程式碼。

政策說明

最終開發人員可以升級或回復 SDK,而不會破壞建構作業,直到所選的目標 API 級別淘汰為止。如果更新至其他 SDK 但未變更目標 API 級別,導致建構作業中斷 (例如,如果所使用的 API 元素或標頭檔案不再存在或已移至其他位置),則會視為 Fuchsia 平台錯誤。

另一方面,對於可變動的特殊 API 級別 NEXTHEAD沒有 API 相容性保證。指定 NEXTHEAD 時,最終開發人員可能會發現更新 SDK 會導致程式碼無法編譯。

我們目前的合作夥伴會與 Fuchsia 團隊密切合作,Fuchsia 會盡力避免針對 NEXT 進行目標開發的端對端開發人員無法進行建構作業。Fuchsia 會盡可能避免讓以 HEAD 為目標的終端開發人員無法建構。

ABI 相容性保證

Fuchsia 針對數字 API 級別提供下列 ABI 執行階段相容性保證:

政策

以數字 API 級別 N 為目標建構的元件,會在支援或淘汰階段的任何 Fuchsia 版本中,搭配 N 成功執行。

政策說明

在所選的目標 API 級別停用之前,終端開發人員不需要變更或重新編譯程式碼,即可在較新版本的 Fuchsia 上執行程式碼。如果平台的行為不同,以至於干擾不同版本 Fuchsia 的元件功能,這會視為 Fuchsia 平台錯誤。

另一方面,如果元件指定可變動的特殊 API 級別 NEXTHEAD,則不保證 ABI 相容性。只有在目標為 NEXTHEAD 的建構元件,且執行的 Fuchsia 版本與建構元件的 SDK 版本完全相符時,系統才會允許執行該元件。舉例來說,以 NEXT 為目標,使用 SDK 版本 16.20231103.1.1 建構的元件,可以在 Fuchsia 版本 16.20231103.1.1 上執行,但無法在搭載 Fuchsia 版本 16.20231103.2.1 的裝置上執行。

在大多數情況下,要確保建構元件的 SDK 版本與執行該元件的 OS 版本完全相符,是不可行的。值得注意的例外狀況是整合測試和本機實驗。樹外存放區通常控制要使用哪個 SDK 版本進行編譯,以及要使用哪個 OS 版本進行測試。如果他們想在 NEXTHEAD 中測試功能,就應保持兩者同步。

禁止使用不支援的設定

根據預設,component_manager 會拒絕啟動 ABI 修訂版本戳記顯示不受 ABI 相容性保證涵蓋的元件。具體違規事項如下:

  • 在特定版本的 Fuchsia 中,只有在 N 從該版本起受到支援或淘汰時,才會執行目標 API 級別為 N 的元件。
  • 特定的 Fuchsia 版本只會執行以 NEXTHEAD 為目標的元件,前提是該元件是使用來自相同版本的 SDK 建構而成。

同樣地,

產品擁有者可以選擇停用這些檢查。舉例來說,即使建構 SDK 的來源是其他 Fuchsia 版本,他們還是可以將個別元件加入許可清單,以便將目標設為 NEXTHEAD。產品擁有者自行承擔停用這些檢查功能的風險。