兼容性

为确保平台兼容性,Fuchsia 提供了以下保证和限制:

API 兼容性保证

Fuchsia 针对数字 API 级别做出以下 API 构建时兼容性保证:

政策

如果最终开发者可以使用某个 SDK 版本成功构建以数字 API 级别 N 为目标的组件,则他们将能够使用支持相应阶段的任何 SDK 版本成功构建该相同的源代码。N

政策说明

在所选目标 API 级别弃用之前,最终开发者可以升级或回滚其 SDK,而不会破坏其 build。如果更新到其他 SDK 而不更改其目标 API 级别导致其 build 崩溃(例如,如果其使用的 API 元素或头文件已不存在或已被移除),则会被视为 Fuchsia 平台 bug。

另一方面,对于可变的特殊 API 级别 NEXTHEAD没有 API 兼容性保证。以 NEXTHEAD 为目标平台时,最终开发者可能会发现,更新 SDK 会导致其代码无法再编译。

我们目前的合作伙伴会与 Fuchsia 团队密切协作,Fuchsia 会尽最大努力避免破坏以 NEXT 为目标平台的最终开发者的 build。Fuchsia 几乎不会采取任何措施来避免破坏以 HEAD 为目标平台的最终开发者的 build。

ABI 兼容性保证

Fuchsia 针对数字 API 级别做出以下 ABI 运行时兼容性保证:

政策

以数字 API 级别 N 为目标平台构建的组件将在任何支持 N 或处于弃用阶段的 Fuchsia 版本上成功运行。

政策说明

在所选的目标 API 级别被弃用之前,最终开发者无需更改或重新编译其代码,即可在较新版本的 Fuchsia 上运行。如果平台的行为方式不同,以干扰其组件在其他版本 Fuchsia 上的功能,则会被视为 Fuchsia 平台 bug。

另一方面,对于以可变的特殊 API 级别 NEXTHEAD 为目标平台的组件,无法保证 ABI 兼容性。仅当组件以 NEXTHEAD 为目标平台构建且其所运行的 Fuchsia 版本与构建该组件的 SDK 版本完全匹配时,系统才允许运行该组件。例如,使用 SDK 版本 16.20231103.1.1 构建且定位到 NEXT 的组件可以在 Fuchsia 版本 16.20231103.1.1 上运行,但无法在搭载 Fuchsia 版本 16.20231103.2.1 的设备上运行。

在大多数情况下,确保用于构建组件的 SDK 版本与其运行的操作系统版本完全匹配是不可行的。值得注意的例外情况是集成测试和本地实验。 外部代码库通常可以控制其用于编译的 SDK 版本以及用于测试的操作系统版本。如果他们希望能够在 NEXTHEAD 中测试功能,则应使这两个版本保持同步。

禁止使用不受支持的配置

默认情况下,component_manager 会拒绝启动 ABI 修订戳表明不受 ABI 兼容性保证的组件。具体而言:

  • 在给定版本的 Fuchsia 中,只有在该版本支持 NN 已弃用的情况下,才会运行以 API 级别 N 为目标平台的组件。
  • 给定版本的 Fuchsia 仅会运行以 NEXTHEAD 为目标平台的组件,前提是该组件是使用完全相同版本的 SDK 构建的。

同样,您不能使用与所组装平台版本不兼容的组件组装产品。

产品所有者将能够有选择地停用这些检查。例如,他们将能够将个别组件列入许可名单,以定位到 NEXTHEAD,即使用于构建该组件的 SDK 来自其他 Fuchsia 版本也是如此。产品所有者停用这些检查须自行承担风险。