构建和使用支持运行时的 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
  • 模拟层:一种 Jetpack 库,可帮助抽象跨进程通信或进程间通信 (IPC),并保持相同的应用-SDK 接口。

SDK 运行时架构

SDK 运行时采用客户端-服务器类型的模型。

主要区别在于,“客户端”(应用)和“服务器”(启用了运行时的 SDK)在同一设备上运行,并且此通信会跨进程进行。

为了帮助解决这些问题,我们构建了以下 Jetpack 库和工具,以简化 SDK 运行时中的应用-SDK 集成:

  • 桩库:封装容器库(或)有助于抽象化跨进程通信或进程间通信 (IPC)。这还有助于保持相同的应用-SDK 接口。
  • 向后兼容性库:此库用于处理向后兼容性,确保您的 SDK 无论是否可用 SDK 运行时都能保持兼容性。
  • 界面库:我们还提供了用于处理远程呈现的库,例如从启用了运行时的 SDK 提取界面,或调整视图大小和重新布局。
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 时,应用商店都会根据此 ASB 创建正确的 SDK APK 并将其安装。

向后兼容性

由于 SDK 运行时已在 Android 14 中引入,因此我们需要支持较低版本,同时不会给 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 所需的工作。

应用会在自身内调用静态的运行时感知型 SDK,该 SDK 可以包含用于调用支持运行时的 SDK 以及其中的其他业务逻辑的转换层。
应用在自身内调用静态的运行时感知型 SDK,该 SDK 可以包含用于调用支持运行时的 SDK 以及其中的其他业务逻辑的转换层。

第 2 阶段 - 稳态:支持运行时的轻量级 SDK

与厚型感知运行时的 SDK 相比,薄型封装容器(或薄型感知运行时的 SDK [薄型 RA_SDK])仅在静态链接的库 SDK 中包含 API 转换和支持运行时的 SDK 调用代码。

在此阶段,您应该已将所有 SDK 代码从静态应用库 SDK 迁移到支持运行时的 SDK。

应用开发者无需对第 1 阶段进行任何更改,因为应用内支持运行时的轻量级 SDK 会在 SDK 运行时内处理对支持运行时的 SDK 的调用。

应用在自身内调用仅包含转换层的静态 SDK。
应用在自身内调用仅包含转换层的静态 SDK。

第 3 阶段 - 完整迁移

在此最终阶段,您已将 SDK 的所有功能迁移到启用了运行时的 SDK,并从应用中移除了所有静态库。

此时,应用客户端无需再在其 build 中添加您的库,只需在清单中列出 SDK 依赖项,并在其应用代码中添加 SDK 调用即可。

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

完整迁移阶段的架构,其中应用的广告代码会直接调用启用了运行时的 SDK。
完整迁移阶段的架构,其中应用的广告代码会直接调用启用了运行时的 SDK。


简介

第 2 步:设置开发环境