构建和使用支持运行时的 SDK

1
Key concepts
2
Set up your development environment
3
Build an RE SDK
4
Consume the RE SDK
5
Testing, and building for distribution

主要概念

本部分介绍了 SDK 运行时架构、支持运行时的 SDK 的安装方式、向后兼容性,以及如何将现有 SDK 迁移到 SDK 运行时。

术语库

  • 支持运行时的 SDK (RE SDK):为了在 SDK 运行时中运行的 SDK 并通过进程间通信与应用通信 (IPC)。
  • 运行时感知 SDK (RA SDK):一个与应用关联且不支持运行时的 SDK ,其中可能包含您现有的 SDK 代码,以及要调用支持运行时的 SDK 的新代码。
    • 有时也称为“静态链接”或“静态 SDK”
  • Shim:一个 Jetpack 库,有助于抽象化跨 API 中的 进程或进程间通信 (IPC),并保持与 app-SDK 接口。

SDK 运行时架构

SDK 运行时采用 client-server 类型 模型。

主要区别在于,“客户端”(应用)和“服务器”(runtime-enabled SDK)在同一设备上运行,并且这种通信跨进程进行。

为帮助应对这些挑战,我们构建了以下 旨在简化流程的 Jetpack 库和工具 SDK 运行时内的 app-SDK 集成:

  • Shim 库:封装容器库(即 shim)有助于将 跨进程通信或进程间通信 (IPC)。它还 有助于维护相同的应用 SDK 接口。
  • Backcompat 库:此库负责处理向后兼容性, 请确保您的 SDK 兼容,无论 SDK 运行时是 。
  • 界面库:我们还提供了用于处理远程呈现、 例如从支持运行时的 SDK 提取界面,或者调整 观看次数。
。 <ph type="x-smartling-placeholder">
</ph> SDK 运行时架构概览
示意图:应用通过不同的库与支持运行时的 SDK 进行交互。

安装流程的变更

在 Android Studio 或其他工具中构建支持运行时的 SDK 时, 创建 Android SDK Bundle (ASB) 是支持运行时的 SDK 的一种发布格式。

bundletool 处理 ASB 来为支持运行时的 SDK 生成 APK:这个单独的 APK 包含您的 SDK 代码,但没有应用代码。

应用的清单文件声明依赖于支持运行时的 SDK 名称 和版本,并且此依赖项由安装程序应用解析。

安装程序获取 SDK APK 后,将使用 SDK APK 安装。成功后,系统会安装该应用的 APK。

如果应用安装在 Android 13 及更低版本上,以及 不支持 SDK 运行时的设备。在这种情况下 一个包含支持运行时的 SDK 和应用代码的 APK。 如需了解详情,请参阅分发部分

每当应用依赖此 SDK 的正式版 SDK 时,应用商店都会创建 从此 ASB 中选择正确的 SDK APK,然后进行安装。

向后兼容性

由于 Android 14 中引入了 SDK 运行时,因此我们需要支持 而无需为 SDK 或应用开发者带来开销。

为了处理 Android 13 及更低版本的向后兼容性,我们推出了一个 Jetpack 库,无论设备是否支持 SDK 运行时,该库都可以无缝运行支持运行时的 SDK。

按照本指南中的说明操作,在默认情况下即可让支持运行时的 SDK 向后兼容,您无需采取进一步的措施。

我们会在相关阶段重点介绍与向后兼容性相关的操作,但一般而言,您应确保已声明正确的依赖项,并尽可能使用 *Compat 类。

迁移现有 SDK

如果您有想要迁移到运行时的现有 SDK, 可一次性重构整个代码库。不过,您可以选择将现有 SDK 逻辑逐步迁移到支持运行时的新 SDK。

我们建议通过以下三个阶段将现有 SDK 迁移到 SDK 运行时间:

  1. 构建支持运行时的过渡期 SDK,以及与之对应的粗细型运行时感知 SDK。这样,您就可以从现有 SDK 逐步迁移业务逻辑,并为您提供 A/B 测试的测试平台
  2. 通过与之对应的精简运行时感知 SDK 将所有现有 SDK 业务逻辑转变为稳定状态,以简化应用迁移
  3. 通过完整迁移为感兴趣的应用提供支持,以直接使用支持运行时的 SDK,而无需精简运行时感知 SDK

第 1 阶段 - 过渡期:详尽的运行时感知 SDK

首先,您可以选择将部分业务逻辑保留在运行时感知型 SDK 中。我们称之为密集型运行时感知型 SDK 或应用内封装容器。

通过这种方法,您可以将全部或部分 SDK 功能保留在 静态应用库,以及新创建的支持运行时的 SDK。

这样,您就可以逐步将用例迁移到支持运行时的 SDK 进行集成,并针对现有 SDK 测试支持运行时的 SDK。

在此阶段,应用开发者无需对其应用方式进行任何更改 使用您的 SDK,因为相关工作是由您的静态应用库(运行时感知 SDK)来完成 使用运行时感知型 SDK 所必需的。

<ph type="x-smartling-placeholder">
</ph> 应用会在自身内调用一个运行时感知型静态 SDK,该 SDK 可包含转换层来调用支持运行时的 SDK 以及其中的其他业务逻辑。
应用会在自身内调用一个支持运行时的静态 SDK,该 SDK 可包含转换层来调用支持运行时的 SDK 以及其中的其他业务逻辑。

第 2 阶段 - 稳定状态:精简运行时感知型 SDK

与密集的运行时感知型 SDK 相比,精简型封装容器或精简运行时感知型 SDK (精简 RA_SDK),仅包含 API 转换和支持运行时的 SDK 调用 代码。

在此阶段,您应该已从 静态应用库 SDK 导入支持运行时的 SDK。

在第 1 阶段,应用开发者无需做出任何更改,因为您的应用内 对运行时感知型 SDK 的调用(对 SDK 内支持运行时的 SDK 的调用) 运行时。

<ph type="x-smartling-placeholder">
</ph> 应用调用自身内仅包含转换层的静态 SDK。
应用调用自身内仅包含翻译层的静态 SDK。

第 3 阶段 - 完整迁移

在最后这个阶段,您已将所有 SDK 功能迁移到 支持运行时的 SDK,并从应用中移除了所有静态库。

此时,您的应用客户端不再需要 但在清单中仅列出 SDK 依赖项,并在清单中添加 SDK 调用。

SDK 调用由系统路由至 SDK 运行时,其中 支持运行时的 SDK 会自动加载。

<ph type="x-smartling-placeholder">
</ph> 完整迁移阶段的架构,其中应用的广告代码直接调用支持运行时的 SDK。
完整迁移阶段的架构,在此阶段,应用的广告代码直接调用支持运行时的 SDK。


简介

第 2 步:设置开发环境