相容性
為確保平台相容性,Fuchsia 提供下列保證和限制:
API 相容性保證
Fuchsia 針對數字 API 級別提供下列 API 建構時相容性保證:
政策
如果最終開發人員可以使用某個 SDK 版本,成功建構以數字 API 級別 N
為目標的元件,他們就能在支援的階段中,使用任何 SDK 版本搭配 N
成功建構相同的來源程式碼。
政策說明
最終開發人員可以升級或回復 SDK,而不會破壞建構作業,直到所選的目標 API 級別淘汰為止。如果更新至其他 SDK 但未變更目標 API 級別,導致建構作業中斷 (例如,如果所使用的 API 元素或標頭檔案不再存在或已移至其他位置),則會視為 Fuchsia 平台錯誤。
另一方面,對於可變動的特殊 API 級別 NEXT
和 HEAD
,沒有 API 相容性保證。指定 NEXT
或 HEAD
時,最終開發人員可能會發現更新 SDK 會導致程式碼無法編譯。
我們目前的合作夥伴會與 Fuchsia 團隊密切合作,Fuchsia 會盡力避免針對 NEXT
進行目標開發的端對端開發人員無法進行建構作業。Fuchsia 會盡可能避免讓以 HEAD
為目標的終端開發人員無法建構。
ABI 相容性保證
Fuchsia 針對數字 API 級別提供下列 ABI 執行階段相容性保證:
政策
以數字 API 級別 N
為目標建構的元件,會在支援或淘汰階段的任何 Fuchsia 版本中,搭配 N
成功執行。
政策說明
在所選的目標 API 級別停用之前,終端開發人員不需要變更或重新編譯程式碼,即可在較新版本的 Fuchsia 上執行程式碼。如果平台的行為不同,以至於干擾不同版本 Fuchsia 的元件功能,這會視為 Fuchsia 平台錯誤。
另一方面,如果元件指定可變動的特殊 API 級別 NEXT
或 HEAD
,則不保證 ABI 相容性。只有在目標為 NEXT
或 HEAD
的建構元件,且執行的 Fuchsia 版本與建構元件的 SDK 版本完全相符時,系統才會允許執行該元件。舉例來說,以 NEXT
為目標,使用 SDK 版本 16.20231103.1.1
建構的元件,可以在 Fuchsia 版本 16.20231103.1.1
上執行,但無法在搭載 Fuchsia 版本 16.20231103.2.1
的裝置上執行。
在大多數情況下,要確保建構元件的 SDK 版本與執行該元件的 OS 版本完全相符,是不可行的。值得注意的例外狀況是整合測試和本機實驗。樹外存放區通常會控制要使用哪個 SDK 版本進行編譯,以及要使用哪個 OS 版本進行測試。如果他們想在 NEXT
或 HEAD
中測試功能,就應保持兩者同步。
禁止使用不支援的設定
根據預設,component_manager
會拒絕啟動 ABI 修訂版本戳記顯示不受 ABI 相容性保證涵蓋的元件。具體違規事項如下:
- 在特定版本的 Fuchsia 中,只有在
N
從該版本起受到支援或淘汰時,才會執行目標 API 級別為N
的元件。 - 特定的 Fuchsia 版本只會執行以
NEXT
或HEAD
為目標的元件,前提是該元件是使用來自相同版本的 SDK 建構而成。
產品擁有者可以選擇停用這些檢查。舉例來說,即使建構 SDK 的來源是其他 Fuchsia 版本,他們還是可以將個別元件加入許可清單,以便將目標設為 NEXT
或 HEAD
。產品擁有者自行承擔停用這些檢查功能的風險。